2015no11-0406

上传人:kms****20 文档编号:46424359 上传时间:2018-06-26 格式:PDF 页数:73 大小:1.04MB
返回 下载 相关 举报
2015no11-0406_第1页
第1页 / 共73页
2015no11-0406_第2页
第2页 / 共73页
2015no11-0406_第3页
第3页 / 共73页
2015no11-0406_第4页
第4页 / 共73页
2015no11-0406_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《2015no11-0406》由会员分享,可在线阅读,更多相关《2015no11-0406(73页珍藏版)》请在金锄头文库上搜索。

1、数据库系统原理数据库系统原理 第一篇第一篇 基础篇基础篇 第五章第五章 数据库完整性数据库完整性 福州大学数计学院福州大学数计学院 刘漳辉刘漳辉 2 数据库完整性数据库完整性 数据库的数据库的完整性完整性是指数据库中的数据必须始终是指数据库中的数据必须始终 满足数据库语义约束满足数据库语义约束。保证数据库中数据的保证数据库中数据的正确性正确性 、有效性有效性和和相容性相容性,防止错误的数据进入数据库防止错误的数据进入数据库。 通过对数据库中的数据进行语义定义来实现通过对数据库中的数据进行语义定义来实现。 3 数据库安全性与完整性数据库安全性与完整性 数据库安全性与完整性是两个不同的概念:数据

2、库安全性与完整性是两个不同的概念: 数据库安全性的防范对象是数据库安全性的防范对象是非法用户与非法操作非法用户与非法操作; 数据库完整性的防范对象是数据库完整性的防范对象是不合语义的数据不合语义的数据。 4 数据库安全性与完整性数据库安全性与完整性 两者相似之处:两者相似之处: DBMS提供定义用户对数据库的操作权限的机制提供定义用户对数据库的操作权限的机制 与定义完整性约束的机制;与定义完整性约束的机制; 将定义存储在将定义存储在DBMS的数据字典中;的数据字典中; DBMS完成对数据库安全性完成对数据库安全性,完整性的验证功能完整性的验证功能。 5 数据库完整性数据库完整性(续续) 数据库

3、完整性机制的任务是确保数据库中存数据库完整性机制的任务是确保数据库中存储的数据符合现实世界语义储的数据符合现实世界语义。 为维护数据库的完整性,为维护数据库的完整性,DBMS必须:必须: 1.提供定义完整性约束条件的机制提供定义完整性约束条件的机制 2.提供完整性检查的方法提供完整性检查的方法 3.违约处理违约处理 6 第五章第五章 数据库完整性数据库完整性 5.1 实体完整性实体完整性 5.2 参照完整性参照完整性 5.3 用户定义的完整性用户定义的完整性 5.4 完整性约束命名子句完整性约束命名子句 *5.5 域中的完整性限制域中的完整性限制 5.6 触发器触发器 5.7 小结小结 7 5

4、.1.1 实体完整性定义实体完整性定义 关系模型的实体完整性关系模型的实体完整性 CREATE TABLE中用中用PRIMARY KEY定义定义 单属性构成的码有两种说明方法单属性构成的码有两种说明方法 1) 定义为列级约束条件定义为列级约束条件 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(20), .) 8 5.1.1 实体完整性定义实体完整性定义 2) 定义为表级约束条件定义为表级约束条件 CREATE TABLE Student ( Sno CHAR(9), Sname CHAR(20), , PRIMARY KE

5、Y (Sno) 对多个属性构成的码只有一种说明方法对多个属性构成的码只有一种说明方法 定义为表级约束条件定义为表级约束条件 PRIMARY KEY (Sno,Cno) 9 5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理 插入或对主码列进行更新操作时,插入或对主码列进行更新操作时,RDBMS按照实体完整按照实体完整性规则自动进行检查。包括:性规则自动进行检查。包括: 1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改检查主码值是否唯一,如果不唯一则拒绝插入或修改 2. 检查主码的各个属性是否为空,只要有一个为空就拒检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改绝插入或

6、修改 10 第五章第五章 数据库完整性数据库完整性 5.1 实体完整性实体完整性 5.2 参照完整性参照完整性 5.3 用户定义的完整性用户定义的完整性 5.4 完整性约束命名字句完整性约束命名字句 *5.5 域中的完整性限制域中的完整性限制 5.6 触发器触发器 5.7 小结小结 11 5.2.1 参照完整性定义参照完整性定义 关系模型的参照完整性定义关系模型的参照完整性定义 在在CREATE TABLE中用中用FOREIGN KEY短语定义哪些短语定义哪些列为外码列为外码 用用REFERENCES短语指明这些外码参照哪些表的主码短语指明这些外码参照哪些表的主码 12 参照完整性定义参照完整

7、性定义(续续) 例如,关系例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,中一个元组表示一个学生选修的某门课程的成绩, (Sno,Cno)是主码。)是主码。Sno,Cno分别参照引用分别参照引用Student表的表的 主码和主码和Course表的主码表的主码 例例3 定义定义SC中的参照完整性中的参照完整性 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), /*在表级定义实体完整性在表级定义实体完整性*/ FOREIGN KEY (S

8、no) REFERENCES Student(Sno), /*在表级定义参照完整性在表级定义参照完整性*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性在表级定义参照完整性*/ ); 13 5.2.2参照完整性检查和违约处理参照完整性检查和违约处理 可能破坏参照完整性的情况及违约处理 被参照表(例如Student) 参照表(例如SC) 违约处理 可能破坏参照完整性 插入元组 拒绝 可能破坏参照完整性 修改外码值 拒绝 删除元组 可能破坏参照完整性 拒绝/级连删除/设置为空值 修改主码值 可能破坏参照完整性 拒绝/级连修改/设置为空值

9、 14 违约处理违约处理 参照完整性违约处理参照完整性违约处理 1. 拒绝拒绝(NO ACTION)执行执行 默认策略默认策略 2. 级联级联(CASCADE)操作操作 需要进行一系列相关操作需要进行一系列相关操作,保证数据的一致性保证数据的一致性 3. 设置为空值(设置为空值(SET-NULL) 对于参照完整性,除了应该定义外码,还应定义对于参照完整性,除了应该定义外码,还应定义外码列外码列 是否允许空值是否允许空值 15 违约处理违约处理(续续) 例例4 显式说明参照完整性的违约处理示例显式说明参照完整性的违约处理示例 CREATE TABLE SC (Sno CHAR(9) NOT NU

10、LL, 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 Course(Cno) ON DELETE NO ACTION /*当删除当删除course 表中的元组造成了与表中的元组造成了与SC表

11、不一致时表不一致时拒绝删除拒绝删除*/ ON UPDATE CASCADE /*当更新当更新course表中的表中的cno时,时,级联更新级联更新SC表中相应的元组表中相应的元组*/ ); 16 第五章第五章 数据库完整性数据库完整性 5.1 实体完整性实体完整性 5.2 参照完整性参照完整性 5.3 用户定义的完整性用户定义的完整性 5.4 完整性约束命名字句完整性约束命名字句 *5.5 域中的完整性限制域中的完整性限制 5.6 触发器触发器 5.7 小结小结 17 5.3 用户定义的完整性用户定义的完整性 用户定义的完整性就是针对用户定义的完整性就是针对某一具体应用某一具体应用的数据的数据

12、必须满足的语义要求必须满足的语义要求 RDBMS提供,而不必由应用程序承担提供,而不必由应用程序承担 18 5.3 用户定义的完整性用户定义的完整性 5.3.1 属性上的约束条件的定义属性上的约束条件的定义 5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 5.3.3 元组上的约束条件的定义元组上的约束条件的定义 5.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理 19 5.3.1 属性上的约束条件的定义属性上的约束条件的定义 CREATE TABLE时定义时定义 列值非空(列值非空(NOT NULL) 列值唯一(列值唯一(UNIQUE) 检查列值是

13、否满足一个布尔表达式(检查列值是否满足一个布尔表达式(CHECK) 20 属性上的约束条件的定义属性上的约束条件的定义(续续) 3. 用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) ); 21 5.3.2 属性上的约束条件检查和违

14、约处理属性上的约束条件检查和违约处理 插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMS检查属性检查属性上的约束条件是否被满足上的约束条件是否被满足 如果不满足则操作被拒绝执行如果不满足则操作被拒绝执行 22 5.3.3 元组上的约束条件的定义元组上的约束条件的定义 在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制 同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件 23 元组上的约束条件的定义元组上的约束条件的定义(续续) 例例9 当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以Ms.打头。打头。 CREAT

15、E 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.打头打头 24 5.3.4 元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理 插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMS检查元组上的约束检查元组上的约束条件是否被满足条件是否被满足 如果不满足则操作被拒绝执行如

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

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