数据库系统概论第五章数据库的完整性.ppt
《数据库系统概论第五章数据库的完整性.ppt》由会员分享,可在线阅读,更多相关《数据库系统概论第五章数据库的完整性.ppt(60页珍藏版)》请在三一办公上搜索。
1、10/1/2023,An Introduction to Database System,1,数据库系统概论An Introduction to Database System第五章 数据库完整性,10/1/2023,An Introduction to Database System,2,数据库完整性,数据库的完整性数据的正确性和相容性,数据的完整性和安全性是两个不同概念数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据防范对象:不合语义的、不正确的数据数据的安全性保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作,10/1/2023,An Int
2、roduction to Database System,3,数据库完整性(续),为维护数据库的完整性,DBMS必须:提供定义完整性约束条件的机制提供完整性检查的方法违约处理,10/1/2023,An Introduction to Database System,4,第五章 数据库完整性,5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 触发器5.7 小结,10/1/2023,An Introduction to Database System,5,5.1 实体完整性,5.1.1 实体完整性定义5.1.2 实体完整性检查和
3、违约处理,10/1/2023,An Introduction to Database System,6,5.1.1 实体完整性定义,关系模型的实体完整性CREATE TABLE中用PRIMARY KEY定义单属性构成的码有两种说明方法 定义为列级约束条件定义为表级约束条件对多个属性构成的码只有一种说明方法定义为表级约束条件,10/1/2023,An Introduction to Database System,7,实体完整性定义(续),(1)在列级定义主码 CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL,S
4、sex CHAR(2),Sage SMALLINT,Sdept CHAR(20);,例1 将Student表中的Sno属性定义为码,10/1/2023,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);,10/1/2023,An Introduction to Database System,9,实体
5、完整性定义(续),CREATE TABLE SC(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno)/*只能在表级定义主码*/);,例2将SC表中的Sno,Cno属性组定义为码,10/1/2023,An Introduction to Database System,10,5.1 实体完整性,5.1.1 实体完整性定义5.1.2 实体完整性检查和违约处理,10/1/2023,An Introduction to Database System,11,5.1.2 实体完整性检查和违约处理,插入或对
6、主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:检查主码值是否唯一,如果不唯一则拒绝插入或修改 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改,10/1/2023,An Introduction to Database System,12,实体完整性检查和违约处理(续),检查记录中主码值是否唯一的一种方法是进行全表扫描,10/1/2023,An Introduction to Database System,13,实体完整性检查和违约处理(续),另一个是索引(如B+树索引),10/1/2023,An Introduction to Database Syste
7、m,14,第五章 数据库完整性,5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 触发器5.7 小结,10/1/2023,An Introduction to Database System,15,5.2 参照完整性,5.2.1 参照完整性定义5.2.2 参照完整性检查和违约处理,10/1/2023,An Introduction to Database System,16,5.2.1 参照完整性定义,关系模型的参照完整性定义在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码用REFERENCES短语指
8、明这些外码参照哪些表的主码,10/1/2023,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 Student(Sno),/*在表级定义参照完整性*/FOREIGN KEY(Cno)REFERENCES Course(Cno)/*在表级定义参照完整性*/
9、);,例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码,10/1/2023,An Introduction to Database System,18,5.2 参照完整性,5.2.1 参照完整性定义5.2.2 参照完整性检查和违约处理,10/1/2023,An Introduction to Database System,19,参照完整性检查和违约处理,可能破坏参照完整性的情况及违约处理,10/1/2023,An Introduction to Database System,20,违约
10、处理,参照完整性违约处理拒绝(NO ACTION)执行默认策略级联(CASCADE)操作设置为空值(SET-NULL)对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值,10/1/2023,An Introduction to Database System,21,违约处理(续),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/*级联删除
11、SC表中相应的元组*/ON UPDATE CASCADE,/*级联更新SC表中相应的元组*/FOREIGN KEY(Cno)REFERENCES Course(Cno)ON DELETE NO ACTION/*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/ON UPDATE CASCADE/*当更新course表中的cno时,级联更新SC表中相应的元组*/);,例4 显式说明参照完整性的违约处理示例,10/1/2023,An Introduction to Database System,22,第五章 数据库完整性,5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性
12、5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 触发器5.7 小结,10/1/2023,An Introduction to Database System,23,5.3 用户定义的完整性,用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 RDBMS提供,而不必由应用程序承担,10/1/2023,An Introduction to Database System,24,5.3 用户定义的完整性,5.3.1 属性上的约束条件的定义5.3.2 属性上的约束条件检查和违约处理 5.3.3 元组上的约束条件的定义 元组上的约束条件检查和违约处理,10/1/2023,An In
13、troduction to Database System,25,5.3.1 属性上的约束条件的定义,CREATE TABLE时定义列值非空(NOT NULL)列值唯一(UNIQUE)检查列值是否满足一个布尔表达式(CHECK),10/1/2023,An Introduction to Database System,26,属性上的约束条件的定义(续),不允许取空值,例5 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。CREATE TABLE SC(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT NOT NULL,
14、PRIMARY KEY(Sno,Cno),/*如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在列级不允许取空值的定义就不必写了*/);,10/1/2023,An Introduction to Database System,27,属性上的约束条件的定义(续),列值唯一,例6 建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码 CREATE TABLE DEPT(Deptno NUMERIC(2),Dname CHAR(9)UNIQUE,/*要求Dname列值唯一*/Location CHAR(10),PRIMARY KEY(Deptno);,1
15、0/1/2023,An Introduction to Database System,28,属性上的约束条件的定义(续),用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);,10/1/2023,An Introduction to Database System
16、,29,5.3 用户定义的完整性,5.3.1 属性上的约束条件的定义5.3.2 属性上的约束条件检查和违约处理 5.3.3 元组上的约束条件的定义 元组上的约束条件检查和违约处理,10/1/2023,An Introduction to Database System,30,5.3.2 属性上的约束条件检查和违约处理,插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足如果不满足则操作被拒绝执行,10/1/2023,An Introduction to Database System,31,5.3 用户定义的完整性,5.3.1 属性上的约束条件的定义5.3.2 属性上的约束条件检
17、查和违约处理 5.3.3 元组上的约束条件的定义 元组上的约束条件检查和违约处理,10/1/2023,An Introduction to Database System,32,5.3.3 元组上的约束条件的定义,在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件,10/1/2023,An Introduction to Database System,33,元组上的约束条件的定义(续),CREATE TABLE Student(Sno CHAR(9),Sname CHAR(8)NOT NU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 第五 完整性

链接地址:https://www.31ppt.com/p-6166825.html