`

6、数据完整性、约束、范式等数据库知识点概述

 
阅读更多

数据完整性

数据库不仅仅是存储数据,它也必须保证所保存的数据的正确性。如果数据不正确或不一致,那么该数据的完整性可能会遭到破坏,从而给数据库本身的可靠性带来意想不到的问题。

为了维护数据库中的数据完成性,在创建表时通常需要指定一些约束。通过表中的字段()定义约束,就可以防止非法数据的插入问题.对约束的定义可以再create table语句中进行,也可以在alter table语句中进行。

什么是约束呢?

约束是表级的强制规定.根据约束的作用域,约束又可分为表级约束和列级约束两种。

列级约束是指是字段定义的一部分,只能够应用在一个列上.

表级约束是指独立于列的定义,可以应用于一个表中的多个列上。

oracle系统中定义约束时,通过constraint关键字为约束命名,如果用户没有为约束指定名称,系统会自动建立默认的名称。

总结:

l 作用范围:列级约束只能作用在一个列上,而表约束可以作用在多个列上(当然表约束也可以作用在一个列上)。

l 定义方式:列约束必须跟在列的定义里后面,表约束不与列一起,而是单独定义。

l 非空(not null) 约束只能定义在列上

备注:在定义约束时,可以通过指定enabledisable关键字将约束的初始状态设置为激活或禁用状态,默认是激活状态。

定义约束的语法格式1

CREATE TABLE [schema.]table

(column datatype [DEFAULT expr]

[column_constraint],

...

[table_constraint][,...]);

列级约束:

column [CONSTRAINT constraint_name] constraint_type,

表级约束

column,...

[CONSTRAINT constraint_name] constraint_type

(column, ...),

约束的分类为:

NOT NULL

UNIQUE

PRIMARY KEY

FOREIGN KEY

CHECK

1、 Not null

特点如下:

* 为字段定义not null 约束后,该字段不能为null

* Not Null约束只能在列级定义

* 在定义一个表中可以有多个not Null

2、 unique

特点如下:

* 如果为字段定义了unique约束,该字段不能够包含重复值

* unique约束既可以在列级定义,也可以在表级定义。

* oracle系统中被定义的unique约束会自动建立一个唯一的索引。

* 同一个字段既可以在其上定义为not null 也可以建立unique约束,(为某个字段可以添加多个约束),注意:如果在一个字段仅定义了unique约束,则该字段可以包含多个null

Unique主要的目的是:是在保证主键列外,其它列的唯一性。

3、 primary key

特点如下:

* 定义为primary key的字段或字段组中不能包含重复值,并且不能为null.(即满足唯一性,不能为空)

* 在一个表中只能定义一个primary key的约束

* Oracle会自动为具有primarykey约束的字段添加一个唯一的索引,以及一个not null约束

4、 foreign key

特点如下:

* 被定义了foreign key约束的字段的取值只能为相关表中引用的字段的值或null值。

* foreign key约束既可以在列级定义,也可以在表级定义。

* 定义了foreign key约束的外键字段和被引用的主键字段可以在同一张表中,这种情况称为:’自引用’(构成了自关联关系)

* 对于同一个字段可以同时定义为foreign key约束和not null约束。

注意:外键的类型、尺寸等一定要与主键完全一致。

备注:

oracle中级联删除有如下三值:

1、 no action 在删除一方的情况下,对多方不进行任何操作.(不能删,删的情况会出现, 违反完整约束条件的异常信息

2、 cascade

在删除一方的时,会把多方所有与1方关联的数据删除掉。

3、 set null

在删除一方的时,会把多方所有与1方关联的数据的字段值设置为null(注意:该字段必须允许为null 否则的话会出现无法更新*** NULL)

5、 check

check约束是所有约束中最灵活的约束,也是最复杂的约束,check约束检查输入到表中的数据值来维护域的完整性,即检查输入的每一个数据,只有符合条件的数据才允许输入到表中.check约束有如下特点:

* check约束的表达式中,必须引用表中一个或多个字段,并且表达式的运算结果必须是一个布尔值.

* Check约束即可以在列级定义,也可以在表级定义

* 对于同一个字段可以定义多个check约束,而且对于同一个字段可以定义check约束和not null约束。

综合案例:

学生信息表

用户名,用户密码,用户电话,用户邮箱,用户地址.

教师名称,教师性别,教师职务,教师年龄

——————————————————————————————

分析:满足1NF范式(属性不可再分)

满足2NF范式(非主属性必须完全依赖于任一候选键)

用户名->用户密码,用户电话,用户邮箱,用户地址.

Stusname,stel,semail,saddress

用户名—> 教师名称

教师名称—>用户名

stearsid,tname,sname

教师名称—>教师性别,教师职务,教师年龄

Teachertname,tsex,ttitle,tage

满足3NF(非主属性都不传递依赖于任一候选键)

//创建表的语法同时也给表加约束||或者是创建表之后才用alter语句添加约束条件

//第一步切换到管理员权限

SQL> conn system/root;

//第二步创建用户

SQL> create user slj identified by root;

//第三步为用户分配角色权限

SQL> grant connect,resource to slj;//connect 连接 resources 创建表的权限 详细参考第二次oracle课程

//切换到相应的用户

SQL> conn slj/root;

//采用create语句创建表

SQL> create table stu(

2 sname varchar2(20) primary key,

3 stel varchar2(11) not null,

4 semail varchar2(40),

5 saddress varchar2(50)

6 );

Table created

SQL> create table teacher(

2 tname varchar2(20) primary key,

3 tsex varchar2(2),

4 ttitle varchar2(40),

5 tage number(3) check(tage<100 and tage>20)

6 );

Table created

SQL> create table stear(

2 sid number(10) primary key,

3 tname varchar2(20) references teacher(tname),

4 sname varchar2(20) references stu(sname)

5 );

Table created

SQL> commit;

//查询约束条件

SQL> select * from user_constraints;

//查询被约束的列

SQL> select * from user_cons_columns;

分享到:
评论

相关推荐

    SQL数据库完整课件

    "第四次:数据完整性—约束"讲解了数据完整性的重要性,包括实体完整性(主键约束)、参照完整性(外键约束)和域完整性(检查约束)。这些约束确保了数据库中的数据准确无误,防止了不一致性和错误。 4. **数据库...

    1第一章数据库系统概述.pdf

    9. **数据库安全性与完整性**:通过权限控制、审计、备份恢复等手段保护数据库免受未授权访问和破坏,同时,完整性约束确保数据的准确性和一致性。 10. **数据库恢复技术**:当系统出现故障时,数据库恢复技术能够...

    数据库原理与设计

    为了保证数据的准确性和一致性,关系数据库需要支持完整性约束,主要包括实体完整性、参照完整性和用户定义的完整性。 **2.4 关系代数** **2.4.1 传统的集合运算** 传统的集合运算包括并集、交集、差集等,它们...

    数据库原理讲义(清华大学)

    2. 完整性约束:如实体完整性(主键约束)、参照完整性(外键约束)和用户定义的完整性。 3. 触发器:自动执行特定操作,维护数据一致性。 4. 日志与备份:记录数据库操作历史,便于恢复和审计。 七、并发控制与...

    福州大学《数据库原理》课件完整版

    12. **安全性与完整性**:保护数据库免受未经授权的访问和恶意操作,包括用户权限管理、访问控制和数据完整性约束。 13. **分布式数据库**:当数据分布在多个地理位置时,分布式数据库系统协调数据的存储和访问,...

    数据库系统概论(第5版)王珊&萨师煊

    此外,还会讲解实体完整性、参照完整性和用户定义的完整性约束,确保数据的一致性。 5. 数据库事务与并发控制:数据库中的事务处理是保证数据一致性的重要机制。书中会讲解事务的概念、ACID属性(原子性、一致性、...

    16662 数据库原理与设计-习题解答

    本章会讲解各种完整性约束,如外键约束、唯一性约束、检查约束等,以及如何在SQL中实现这些约束。 9. **第九章:数据库事务与并发控制** 事务是数据库操作的基本单位,保证了数据的一致性。本章将介绍事务的ACID...

    数据库知识要点

    - 提高数据完整性。 - 改善数据一致性。 3. **反规范化技术**: - 适当的数据冗余可以提高查询性能。 - 需要权衡性能与数据一致性的关系。 ### 数据库事务处理 1. **事务特性**: - 原子性(Atomicity):...

    数据库原理和应用基本知识点与习题.doc

    第七章“数据库设计”涵盖了需求分析、概念设计、逻辑设计和物理设计等数据库设计的步骤,强调了数据库的完整性约束和优化策略。 第八章“数据库保护”讨论了事务处理、并发控制、恢复技术和安全性控制,确保数据库...

    数据库复习资料.pdf

    这篇复习资料涵盖了数据库的基础知识,包括基本概念、数据管理的发展阶段、数据模型、数据库系统的结构以及数据的独立性等关键点。 首先,我们要理解四个基本概念:数据(Data)、数据库(DB)、数据库系统(DBS)...

    数据库.pdf

    根据提供的文件内容,以下是关于数据库的详细知识点概述: 数据库概念和类型: 数据库是存储、管理、处理和检索数据的系统。它能够提供数据的结构化存储,并支持数据的快速查询和管理。数据库系统可以根据不同的...

    数据库系统导论

    - 数据完整性约束确保数据的准确性和一致性,如实体完整性、参照完整性和用户定义的完整性。 - SQL中的约束如NOT NULL、UNIQUE、FOREIGN KEY等用于维护完整性。 8. **第九章 视图**: - 视图是从一个或多个基表...

    2010年1月数据库系统原理试卷答案

    这张2010年1月的自考试卷涵盖了数据库系统的基础概念、数据模型、数据依赖、事务处理、数据完整性、SQL语句以及数据库设计等多个核心知识点。 1. 数据模型: - 层次模型和网状模型:在这些早期的数据库模型中,...

    数据库系统工程师资料..doc

    数据库设计需要考虑数据的完整性、一致性、安全性和性能等因素。 五、数据库安全 数据库安全是指保护数据库免受未经授权的访问、篡改和破坏的措施。常见的数据库安全措施包括身份验证、访问控制、加密存储、备份和...

    数据库sql期末总复习

    在复习数据库SQL时,我们需要涵盖多个关键知识点,这些知识点包括数据库系统的基本概念、数据模型、数据库系统的结构、关系数据库、SQL语句、安全性以及完整性等。 1. **数据库系统概述**: - 数据、DB(数据库)...

    太原理工大学数据库复习大纲

    数据库规范化、反规范化和数据完整性约束也是重点。 5. **事务与并发控制**:讨论事务的ACID属性(原子性、一致性、隔离性和持久性),以及并发问题如死锁和活锁。还会介绍不同的并发控制机制,如锁定、时间戳排序...

    数据库期末模拟试题

    这部分知识点概述了数据库设计的过程。 8. **数据库系统中可能发生的故障种类** - 数据库系统中可能发生的故障种类包括事务内部故障、**系统故障**、介质故障、计算机病毒等。这部分知识点涉及数据库系统的可靠性...

    数据库概论大纲创新数据库概论大纲创新.doc

    点:理解和掌握关系模型的基本概念,包括关系数据结构、关系操作集合和关系完整性约束;能够运用关系代数、元组关系演算和域关系演算进行数据库查询。 难点:关系模型中的抽象概念,如关系、元组、属性等;关系代数...

Global site tag (gtag.js) - Google Analytics