数据库系统概论第五章数据库的完整性课件

上传人:m****5 文档编号:51700021 上传时间:2018-08-16 格式:PPT 页数:60 大小:546KB
返回 下载 相关 举报
数据库系统概论第五章数据库的完整性课件_第1页
第1页 / 共60页
数据库系统概论第五章数据库的完整性课件_第2页
第2页 / 共60页
数据库系统概论第五章数据库的完整性课件_第3页
第3页 / 共60页
数据库系统概论第五章数据库的完整性课件_第4页
第4页 / 共60页
数据库系统概论第五章数据库的完整性课件_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《数据库系统概论第五章数据库的完整性课件》由会员分享,可在线阅读,更多相关《数据库系统概论第五章数据库的完整性课件(60页珍藏版)》请在金锄头文库上搜索。

1、数据库系统概论 An Introduction to Database System第五章 数据库完整性Date1数据库完整性v数据库的完整性数据的正确性和相容性v数据的完整性和安全性是两个不同概念数据的完整性n防止数据库中存在不符合语义的数据,也就是防止数据库中存 在不正确的数据n防范对象:不合语义的、不正确的数据数据的安全性n保护数据库防止恶意的破坏和非法的存取n防范对象:非法用户和非法操作Date2数据库完整性(续)v为维护数据库的完整性,DBMS必须:提供定义完整性约束条件的机制提供完整性检查的方法违约处理Date3第五章 数据库完整性5.1 实体完整性5.2 参照完整性5.3 用户定

2、义的完整性5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 触发器5.7 小结Date45.1 实体完整性v5.1.1 实体完整性定义v5.1.2 实体完整性检查和违约处理Date55.1.1 实体完整性定义v关系模型的实体完整性CREATE TABLE中用PRIMARY KEY定义v单属性构成的码有两种说明方法 定义为列级约束条件定义为表级约束条件v对多个属性构成的码只有一种说明方法定义为表级约束条件 Date6实体完整性定义(续)(1)在列级定义主码CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) NOT NU

3、LL, Ssex CHAR(2) ,Sage SMALLINT,Sdept CHAR(20);例1 将Student表中的Sno属性定义为码Date7实体完整性定义(续)(2)在表级定义主码CREATE TABLE Student(Sno CHAR(9), Sname CHAR(20) NOT NULL,Ssex CHAR(2) ,Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY (Sno); Date8实体完整性定义(续)CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMAL

4、LINT,PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/); 例2将SC表中的Sno,Cno属性组定义为码Date95.1 实体完整性v5.1.1 实体完整性定义v5.1.2 实体完整性检查和违约处理Date105.1.2 实体完整性检查和违约处理v 插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括: 检查主码值是否唯一,如果不唯一则拒绝插入或修改 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改Date11实体完整性检查和违约处理(续)v 检查记录中主码值是否唯一的一种方法是进行全表扫描Date12实体完整性检查和违约处理(续)v

5、 另一个是索引 (如B+树索引)51719312255166717993371215 20 2530 41 5154 65 6668 69 7184 9376 78 79Date13第五章 数据库完整性5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 触发器5.7 小结Date145.2 参照完整性v5.2.1 参照完整性定义v5.2.2 参照完整性检查和违约处理Date155.2.1 参照完整性定义v关系模型的参照完整性定义在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码用REFERENCES短语指

6、明这些外码参照哪些表的主码 Date16参照完整性定义(续)例3 定义SC中的参照完整性CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT,PRIMARY KEY (Sno, Cno), /*在表级定义实体完整性*/FOREIGN KEY (Sno) REFERENCES Student(Sno), /*在表级定义参照完整性*/FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性*/);例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,

7、(Sno, Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码Date175.2 参照完整性v5.2.1 参照完整性定义v5.2.2 参照完整性检查和违约处理Date18参照完整性检查和违约处理可能破坏参照完整性的情况及违约处理被参照表(例如Student)参照表(例如SC)违约处理可能破坏参照完整性 插入元组拒绝可能破坏参照完整性 修改外码值拒绝删除元组 可能破坏参照完整性拒绝/级连删除/设置为空值修改主码值 可能破坏参照完整性拒绝/级连修改/设置为空值Date19违约处理v 参照完整性违约处理 拒绝(NO ACTION)执行n默认策略 级联(CASCAD

8、E)操作 设置为空值(SET-NULL)n对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值Date20违约处理(续)CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE /*级联删除SC表中相应的元组*/ON UPDATE CASCADE, /*级联更新SC表中相应的元组*/FOREIGN KEY (Cno) REFERENCES

9、 Course(Cno) ON DELETE NO ACTION /*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/ON UPDATE CASCADE /*当更新course表中的cno时,级联更新SC表中相应的元组*/);例4 显式说明参照完整性的违约处理示例Date21第五章 数据库完整性5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 触发器5.7 小结Date225.3 用户定义的完整性v用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 vRDBMS提供,而不必由应用程序承担Date23

10、5.3 用户定义的完整性v5.3.1 属性上的约束条件的定义v5.3.2 属性上的约束条件检查和违约处理 v5.3.3 元组上的约束条件的定义 v5.3.4元组上的约束条件检查和违约处理Date245.3.1 属性上的约束条件的定义vCREATE TABLE时定义列值非空(NOT NULL)列值唯一(UNIQUE)检查列值是否满足一个布尔表达式(CHECK)Date25属性上的约束条件的定义(续)v不允许取空值 例5 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL

11、,Grade SMALLINT NOT NULL,PRIMARY KEY (Sno, Cno), /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值, 则在列级不允许取空值的定义就不必写了 * /); Date26属性上的约束条件的定义(续)v列值唯一 例6 建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码CREATE TABLE DEPT(Deptno NUMERIC(2),Dname CHAR(9) UNIQUE,/*要求Dname列值唯一*/Location CHAR(10),PRIMARY KEY (Deptno);Date27属性上的约

12、束条件的定义(续)v 用CHECK短语指定列值应该满足的条件例7 Student表的Ssex只允许取“男”或“女”。CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (男,女) ) , /*性别属性Ssex只允许取男或女 */Sage SMALLINT,Sdept CHAR(20);Date285.3 用户定义的完整性v5.3.1 属性上的约束条件的定义v5.3.2 属性上的约束条件检查和违约处理 v5.3.3 元组上的约束条件的定义 v5.3.4元组

13、上的约束条件检查和违约处理Date295.3.2 属性上的约束条件检查和违约处理v插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足v如果不满足则操作被拒绝执行 Date305.3 用户定义的完整性v5.3.1 属性上的约束条件的定义v5.3.2 属性上的约束条件检查和违约处理 v5.3.3 元组上的约束条件的定义 v5.3.4元组上的约束条件检查和违约处理Date315.3.3 元组上的约束条件的定义v 在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制v 同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件 Date32元

14、组上的约束条件的定义(续)CREATE TABLE Student(Sno CHAR(9), Sname CHAR(8) NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY (Sno),CHECK (Ssex=女 OR Sname NOT LIKE Ms.%)/*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/); 性别是女性的元组都能通过该项检查,因为Ssex=女成立; 当性别是男性时,要通过检查则名字一定不能以Ms.打头例9 当学生的性别是男时,其名字不能以Ms.打头。Date335.3 用户定义的完整

15、性v5.3.1 属性上的约束条件的定义v5.3.2 属性上的约束条件检查和违约处理 v5.3.3 元组上的约束条件的定义 v5.3.4 元组上的约束条件检查和违约处理Date345.3.4 元组上的约束条件检查和违约处理v 插入元组或修改属性的值时,RDBMS检查元组上的约束条件是否被满足v 如果不满足则操作被拒绝执行 Date35第五章 数据库完整性5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 触发器5.7 小结Date365.4 完整性约束命名子句vCONSTRAINT 约束CONSTRAINT PRIMARY KEY短语 | FOREIGN KEY短语 | CHECK短语 Date37完整性约束命名子句(续)CREATE TABLE Student(Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),Sname CHAR(20) CONSTRAINT C2 NOT NULL,Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage BEFORE | AF

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 咨询培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号