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

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

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

1、2/24/2019,An Introduction to Database System,1,数据库系统概论 An Introduction to Database System 第五章 数据库完整性,2/24/2019,An Introduction to Database System,2,数据库完整性,数据库的完整性 数据的正确性和相容性,数据的完整性和安全性是两个不同概念 数据的完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据 数据的安全性 保护数据库防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作,2/24/20

2、19,An Introduction to Database System,3,数据库完整性(续),为维护数据库的完整性,DBMS必须: 提供定义完整性约束条件的机制 提供完整性检查的方法 违约处理,2/24/2019,An Introduction to Database System,4,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 触发器 5.7 小结,2/24/2019,An Introduction to Database System,5,5.1 实体完整性,5.1.1 实体完

3、整性定义 5.1.2 实体完整性检查和违约处理,2/24/2019,An Introduction to Database System,6,5.1.1 实体完整性定义,关系模型的实体完整性 CREATE TABLE中用PRIMARY KEY定义 单属性构成的码有两种说明方法 定义为列级约束条件 定义为表级约束条件 对多个属性构成的码只有一种说明方法 定义为表级约束条件,2/24/2019,An Introduction to Database System,7,实体完整性定义(续),(1)在列级定义主码 CREATE TABLE Student (Sno CHAR(9) PRIMARY KE

4、Y, Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20) );,例1 将Student表中的Sno属性定义为码,2/24/2019,An Introduction to Database System,8,实体完整性定义(续),(2)在表级定义主码 CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno) );,2/24

5、/2019,An Introduction to Database System,9,实体完整性定义(续),CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/ );,例2将SC表中的Sno,Cno属性组定义为码,2/24/2019,An Introduction to Database System,10,5.1 实体完整性,5.1.1 实体完整性定义 5.1.2 实体完整性检查和违约处理,2/24/2019,An Int

6、roduction to Database System,11,5.1.2 实体完整性检查和违约处理,插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括: 检查主码值是否唯一,如果不唯一则拒绝插入或修改 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改,2/24/2019,An Introduction to Database System,12,实体完整性检查和违约处理(续),检查记录中主码值是否唯一的一种方法是进行全表扫描,2/24/2019,An Introduction to Database System,13,实体完整性检查和违约处理(续),另一

7、个是索引 (如B+树索引),2/24/2019,An Introduction to Database System,14,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 触发器 5.7 小结,2/24/2019,An Introduction to Database System,15,5.2 参照完整性,5.2.1 参照完整性定义 5.2.2 参照完整性检查和违约处理,2/24/2019,An Introduction to Database System,16,5.2.1 参照完整性定

8、义,关系模型的参照完整性定义 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码 用REFERENCES短语指明这些外码参照哪些表的主码,2/24/2019,An Introduction to Database System,17,参照完整性定义(续),例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 S

9、tudent(Sno), /*在表级定义参照完整性*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性*/ );,例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码,2/24/2019,An Introduction to Database System,18,5.2 参照完整性,5.2.1 参照完整性定义 5.2.2 参照完整性检查和违约处理,2/24/2019,An Introduction to Database System

10、,19,参照完整性检查和违约处理,可能破坏参照完整性的情况及违约处理,2/24/2019,An Introduction to Database System,20,违约处理,参照完整性违约处理 拒绝(NO ACTION)执行 默认策略 级联(CASCADE)操作 设置为空值(SET-NULL) 对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值,2/24/2019,An Introduction to Database System,21,违约处理(续),CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Gra

11、de SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE /*级联删除SC表中相应的元组*/ ON UPDATE CASCADE, /*级联更新SC表中相应的元组*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION /*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/ ON UPDATE CASCADE /*当更新course表中的cno时,级联更新SC表中相应的元组*/ )

12、;,例4 显式说明参照完整性的违约处理示例,2/24/2019,An Introduction to Database System,22,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 *5.5 域中的完整性限制 5.6 触发器 5.7 小结,2/24/2019,An Introduction to Database System,23,5.3 用户定义的完整性,用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 RDBMS提供,而不必由应用程序承担,2/24/2019,An Introduction to Dat

13、abase System,24,5.3 用户定义的完整性,5.3.1 属性上的约束条件的定义 5.3.2 属性上的约束条件检查和违约处理 5.3.3 元组上的约束条件的定义 5.3.4元组上的约束条件检查和违约处理,2/24/2019,An Introduction to Database System,25,5.3.1 属性上的约束条件的定义,CREATE TABLE时定义 列值非空(NOT NULL) 列值唯一(UNIQUE) 检查列值是否满足一个布尔表达式(CHECK),2/24/2019,An Introduction to Database System,26,属性上的约束条件的定义

14、(续),不允许取空值,例5 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno), /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在列级不允许取空值的定义就不必写了 * / );,2/24/2019,An Introduction to Database System,27,属性上的约束条件的定义(续),列值唯一,例6 建立部门表DEPT,要求部

15、门名称Dname列取值唯一,部门编号Deptno列为主码 CREATE TABLE DEPT (Deptno NUMERIC(2), Dname CHAR(9) UNIQUE,/*要求Dname列值唯一*/ Location CHAR(10), PRIMARY KEY (Deptno) );,2/24/2019,An Introduction to Database System,28,属性上的约束条件的定义(续),用CHECK短语指定列值应该满足的条件,例7 Student表的Ssex只允许取“男”或“女”。 CREATE TABLE Student (Sno CHAR(9) PRIMARY

16、 KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (男,女) ) , /*性别属性Ssex只允许取男或女 */ Sage SMALLINT, Sdept CHAR(20) );,2/24/2019,An Introduction to Database System,29,5.3 用户定义的完整性,5.3.1 属性上的约束条件的定义 5.3.2 属性上的约束条件检查和违约处理 5.3.3 元组上的约束条件的定义 5.3.4元组上的约束条件检查和违约处理,2/24/2019,An Introduction to Database System,30,5.3.2 属性上的约束条件检查和违约处理,插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足 如果不满足则操作被拒绝执行,2/24/2019,An Introduction to Databa

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

当前位置:首页 > 高等教育 > 大学课件

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