课程名称数据库系统课件

上传人:我*** 文档编号:137930708 上传时间:2020-07-12 格式:PPT 页数:61 大小:157KB
返回 下载 相关 举报
课程名称数据库系统课件_第1页
第1页 / 共61页
课程名称数据库系统课件_第2页
第2页 / 共61页
课程名称数据库系统课件_第3页
第3页 / 共61页
课程名称数据库系统课件_第4页
第4页 / 共61页
课程名称数据库系统课件_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《课程名称数据库系统课件》由会员分享,可在线阅读,更多相关《课程名称数据库系统课件(61页珍藏版)》请在金锄头文库上搜索。

1、An Introduction to Database System,1,数据库系统概论 An Introduction to Database System 第五章 数据库完整性,An Introduction to Database System,2,第五章 数据库完整性,什么是数据库的完整性 数据的正确性和相容性 防止不合语义的数据进入数据库。 例: 学生的年龄必须是整数,取值范围为14-50; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系; 完整性:能否真实地反映现实世界,An Introduction to Database System,3,完

2、整性控制机制,1.提供定义完整性约束条件的机制 2.提供完整性检查的方法 3.违约处理,An Introduction to Database System,4,完整性约束条件定义,完整性约束条件:数据模型的组成部分,约束数据库中数据的语义 DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中,An Introduction to Database System,5,完整性控制机制,检查用户发出的操作请求是否违背了完整性约束条件,An Introduction to Database System,6,违约反应,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一

3、定的动作来保证数据的完整性。,An Introduction to Database System,7,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.5 域中的完整性限制 5.6 触发器 5.7 小结,An Introduction to Database System,8,5.1.1 实体完整性定义,关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY 定义。 单属性的码: 定义为列级约束条件 定义为表级约束条件 多属性的码: 定义为表级约束条件 例1:将Student 表中的Sno属性定义为码:

4、CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20);,CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) PRIMARY KEY (Sno );,An Introduction to Database System,9,实体完整性定义 举例,例2:将SC表中的Sn

5、o,Cno属性组定义为码 CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) );,An Introduction to Database System,10,5.1.2 实体完整性检查和违约处理,对定义主码的表,当用户要插入一条记录或对主码列进行更新操作时,要进行实体完整性规则自动检查。 检查主码值是否唯一,若不唯一则拒绝插入或修改; 检查主码的各个属性是否为空,只要有一个为空 就拒绝插入或修改。 检查方法:全表扫描 B+树索引,An Introdu

6、ction to Database System,11,B+树索引,25,3 51,51 68 79,3 15 30,79 84 93,68 69 71 76,51 54 65,30 41,15 20 25,3 7,25,An Introduction to Database System,12,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.5 域中的完整性限制 5.6 触发器 5.7 小结,An Introduction to Database System,13,5.2.1 参照完整性定义,关系模型的参照完整性在CR

7、EATE TABLE中用FOREIGN KEY 短语定义哪些列为 外码,用REFERENCES短语指明外码参照哪些表的主码。 例3: 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);,An Introduction to Database System,14,5.2.2参照完整性

8、检查和违约处理,表5.1 可能破坏参照完整性的情况及违约处理,An Introduction to Database System,15,例:职工部门数据库包含职工表EMP和部门表DEPT 1 DEPT关系的主码为部门号Deptno 2 EMP关系的主码为职工号Empno, 外码为部门号Deptno 称DEPT为被参照关系或目标关系,EMP为参照关系 RDBMS实现参照完整性时需要考虑以下4方面:,5.2.2参照完整性检查和违约处理,An Introduction to Database System,16,1. 外码是否可以接受空值的问题,外码是否能够取空值:依赖于应用环境的语义 实现参照完

9、整性: 系统提供定义外码的机制 定义外码列是否允许空值的机制,An Introduction to Database System,17,1. 外码是否可以接受空值的问题,例1:在职工部门数据库中, EMP关系包含有外码Deptno 某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作 和应用环境的语义是相符,An Introduction to Database System,18,1. 外码是否可以接受空值的问题,例2:学生选课数据库 Student关系为被参照关系,其主码为Sno。 SC为参照关系,外码为Sno。 若SC的Sno为空值:表明尚不存在的某个学生,或者某个不知学号

10、的学生,选修了某门课程,其成绩记录在Grade中, 与学校的应用环境是不相符的,因此SC的Sno列不能取空值。,An Introduction to Database System,19,2.在被参照关系中删除元组时的问题,出现违约操作的情形: 删除被参照关系的某个元组(student) 而参照关系有若干元组(SC)的外码值与被删除的被参照关系的主码值相同,An Introduction to Database System,20,2.在被参照关系中删除元组时的问题,违约反应:可有三种策略 级联删除(CASCADES) 受限删除(RESTRICTED) 置空值删除(NULLIFIES) 这三种

11、处理方法,哪一种是正确的,要依应用环境的语义来定,An Introduction to Database System,21,2.在被参照关系中删除元组时的问题,级联删除 将参照关系中外码值与被参照关系中要删除元 组主码值相对应的元组一起删除 受限删除 当参照关系中没有任何元组的外码值与要删除 的被参照关系的元组的主码值相对应时,系统 才执行删除操作,否则拒绝此删除操作,An Introduction to Database System,22,2.在被参照关系中删除元组时的问题,置空值删除 删除被参照关系的元组,并将参照关系 中与被参照关系中被删除元组主码值相 等的外码值置为空值。,An I

12、ntroduction to Database System,23,2.在被参照关系中删除元组时的问题,例3:要删除Student关系中Sno=950001的元组, 而SC关系中有4个元组的Sno都等于950001。 级联删除:将SC关系中所有4个Sno=950001的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去 受限删除:系统将拒绝执行此删除操作。,An Introduction to Database System,24,2.在被参照关系中删除元组时的问题,置空值删除:将SC关系中所有Sno=950001的元组的Sno值置为空值。 在学生选课数据库

13、中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。,An Introduction to Database System,25,3.在参照关系中插入元组时的问题,出现违约操作的情形 需要在参照关系中插入元组,而被参照关系不存在相应的元组 违约反应 受限插入 递归插入,An Introduction to Database System,26,3.在参照关系中插入元组时的问题,受限插入 仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。 递归插入 首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值

14、,然后向参照关系插入元组。,An Introduction to Database System,27,3.在参照关系中插入元组时的问题,例4:向SC关系插入(99001,1,90)元组,而Student关系中尚没有Sno=99001的学生 受限插入:系统将拒绝向SC关系插入(99001,1,90)元组 递归插入:系统将首先向Student关系插入Sno=99001的元组,然后向SC关系插入(99001,1,90)元组。,An Introduction to Database System,28,4. 修改主码的问题,两种策略 (1)不允许修改主码 (2)允许修改主码,An Introduct

15、ion to Database System,29,允许修改主码策略,违约操作 要修改被参照关系中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的主码值 要修改参照关系中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参照关系修改后的主码值,An Introduction to Database System,30,允许修改主码策略,违约反应 (1) 修改的关系是被参照关系:与删除类似 级联修改 受限修改 置空值修改,An Introduction to Database System,31,允许修改主码策略,级联修改 修改被参照关系中主码值同时,用相同的方法

16、修改参照关系中相应的外码值。 受限修改 拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。 置空值修改 修改被参照关系中主码值,同时将参照关系中相应的外码值置为空值。,An Introduction to Database System,32,允许修改主码策略,例5:将Student关系中Sno=950001的元组中Sno值改为960123。而SC关系中有 4个元组的Sno=950001 级联修改:将SC关系中4个Sno=950001元组中的Sno值也改为960123。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。,An Introduction to Database System,33,允许修改主码策略,受限修改:只有SC中没有任何元组的Sno=950001时,才能修改Student表中Sno=950001的元组的Sno值改为960123。 置空值修改:将Student表中Sno=

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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