第5章数据库完整性优秀PPT.ppt
《第5章数据库完整性优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第5章数据库完整性优秀PPT.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义的完整性用户定义的完整性5.4 5.4 完整性约束命名字句完整性约束命名字句*5.5 *5.5 域中的完整性限制域中的完整性限制5.6 5.6 触发器触发器5.7 5.7 小结小结第五章 数据库完整性1数据库完整性数据库完整性数据库的完整性数据库的完整性数据的正确性和相容性数据的正确性和相容性数据的完整性和平安性是两个不同概念数据的完整性和平安性是两个不同概念数据的完整性数据的完整性防止数据库中存在不符合语义的数据,也就是防止防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据数据库
2、中存在不正确的数据防范对象:不合语义的、不正确的数据防范对象:不合语义的、不正确的数据数据的平安性数据的平安性爱护数据库防止恶意的破坏和非法的存取爱护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作防范对象:非法用户和非法操作2数据库完整性数据库完整性(续续)为维护数据库的完整性,为维护数据库的完整性,DBMSDBMS必需:必需:1.1.供应定义完整性约束条件的机制供应定义完整性约束条件的机制2.2.供应完整性检查的方法供应完整性检查的方法3.3.违约处理违约处理3第五章第五章 数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3
3、5.3 用户定义的完整性用户定义的完整性5.4 5.4 完整性约束命名字句完整性约束命名字句*5.5 *5.5 域中的完整性限制域中的完整性限制5.6 5.6 触发器触发器5.7 5.7 小结小结45.1 5.1 实体完整性实体完整性5.1.1 实体完整性定义5.1.2 实体完整性检查和违约处理55.1.1 5.1.1 实体完整性定义实体完整性定义关系模型的实体完整性关系模型的实体完整性CREATE TABLECREATE TABLE中用中用PRIMARY KEYPRIMARY KEY定义定义单属性构成的码有两种说明方法单属性构成的码有两种说明方法 定义为列级约束条件定义为列级约束条件定义为表
4、级约束条件定义为表级约束条件对多个属性构成的码只有一种说明方法对多个属性构成的码只有一种说明方法定义为表级约束条件定义为表级约束条件 6实体完整性定义实体完整性定义(续续)例例1 1 将将StudentStudent表中的表中的SnoSno属性定义为码属性定义为码 (1)(1)在列级定义主码在列级定义主码 CREATE TABLE Student CREATE TABLE Student (Sno CHAR(9)PRIMARY KEYSno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL Sname CHAR(20)NOT NULL,Ssex CHAR(2)
5、Ssex CHAR(2),Sage SMALLINT Sage SMALLINT,Sdept CHAR(20);Sdept CHAR(20);7实体完整性定义实体完整性定义(续续)(2)(2)在表级定义主码在表级定义主码 CREATE TABLE StudentCREATE TABLE Student (Sno CHAR(9)NOT NULL (Sno CHAR(9)NOT NULL,Sname CHAR(20)NOT NULL Sname CHAR(20)NOT NULL,Ssex CHAR(2)Ssex CHAR(2),Sage SMALLINT Sage SMALLINT,Sdept C
6、HAR(20)Sdept CHAR(20),PRIMARY KEY(Sno)PRIMARY KEY(Sno););8实体完整性定义实体完整性定义(续续)例例2 2将将SCSC表中的表中的SnoSno,CnoCno属性组定义为码属性组定义为码 CREATE TABLE SCCREATE TABLE SC (Sno CHAR(9)NOT NULL (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL Cno CHAR(4)NOT NULL,Grade SMALLINT Grade SMALLINT,PRIMARY KEY(SnoPRIMARY KEY(Sno,Cno)/
7、*Cno)/*只能在表级定义主码只能在表级定义主码*/*/););95.1 5.1 实体完整性实体完整性5.1.1 5.1.1 实体完整性定义实体完整性定义5.1.2 5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理105.1.2 5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理插入或对主码列进行更新操作时,插入或对主码列进行更新操作时,RDBMSRDBMS依据依据实体完整性规则自动进行检查。包括:实体完整性规则自动进行检查。包括:1.1.检查主码值是否唯一,假如不唯一则拒绝检查主码值是否唯一,假如不唯一则拒绝插入或修改。插入或修改。2.2.检查主码的各个属性是否为空,
8、只要有一检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。个为空就拒绝插入或修改。11实体完整性检查和违约处理实体完整性检查和违约处理(续续)检查记录中主码值是否唯一的一种方法是进行检查记录中主码值是否唯一的一种方法是进行全表扫描全表扫描12实体完整性检查和违约处理实体完整性检查和违约处理(续续)另一种方法是另一种方法是索引索引 13第五章第五章 数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义的完整性用户定义的完整性5.4 5.4 完整性约束命名字句完整性约束命名字句*5.5 *5.5 域中的完整性限制域中的完
9、整性限制5.6 5.6 触发器触发器5.7 5.7 小结小结145.2 5.2 参照完整性参照完整性5.2.1 5.2.1 参照完整性定义参照完整性定义5.2.2 5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理155.2.1 5.2.1 参照完整性定义参照完整性定义关系模型的参照完整性定义关系模型的参照完整性定义在在CREATE TABLECREATE TABLE中用中用FOREIGN KEYFOREIGN KEY短语定义哪短语定义哪些列为外码些列为外码用用REFERENCESREFERENCES短语指明这些外码参照哪些表的短语指明这些外码参照哪些表的主码主码 16参照完整性定义
10、参照完整性定义(续续)例如,关系例如,关系SCSC中一个元组表示一个学生选修的某门课程的成果,中一个元组表示一个学生选修的某门课程的成果,(SnoSno,CnoCno)是主码。)是主码。SnoSno,CnoCno分别参照引用分别参照引用StudentStudent表的主码表的主码和和CourseCourse表的主码。表的主码。例例3 3 定义定义SCSC中的参照完整性中的参照完整性 CREATE TABLE SC CREATE TABLE SC (Sno CHAR(9)NOT NULL (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL Cno CHAR(4)NO
11、T NULL,Grade SMALLINT Grade SMALLINT,PRIMARY KEY(Sno,Cno),/PRIMARY KEY(Sno,Cno),/在表级定义实体完整性在表级定义实体完整性 FOREIGN KEY(Sno)REFERENCES Student(Sno)FOREIGN KEY(Sno)REFERENCES Student(Sno),/*/*在表级定义参照完整性在表级定义参照完整性*/*/FOREIGN KEY(Cno)REFERENCES Course(Cno)FOREIGN KEY(Cno)REFERENCES Course(Cno)/*/*在表级定义参照完整性在
12、表级定义参照完整性*/*/););175.2 5.2 参照完整性参照完整性5.2.1 5.2.1 参照完整性定义参照完整性定义5.2.2 5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理18参照完整性检查和违约处理参照完整性检查和违约处理可能破坏参照完整性的状况及违约处理被参照表被参照表(例如例如Student)Student)参照表(例如参照表(例如SCSC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连删除级连删除
13、/设置为空值设置为空值修改主码值修改主码值 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连修改级连修改/设置为空值设置为空值19违约处理违约处理参照完整性违约处理参照完整性违约处理1.1.拒绝拒绝(NO ACTION)(NO ACTION)执行执行默认策略默认策略2.2.级联级联(CASCADE)(CASCADE)操作操作3.3.设置为空值(设置为空值(SET-NULLSET-NULL)对于参照完整性,除了应当定义外码,还应定对于参照完整性,除了应当定义外码,还应定义外码列是否允许空值义外码列是否允许空值20违约处理违约处理(续续)例例4 4 显式说明参照完整性的违约处理示例显式说明参照完
14、整性的违约处理示例 CREATE TABLE SC CREATE TABLE SC (Sno CHAR(9)NOT NULL (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL Cno CHAR(4)NOT NULL,Grade SMALLINT Grade SMALLINT,PRIMARY KEY PRIMARY KEY(SnoSno,CnoCno),),FOREIGN KEY(Sno)REFERENCES Student(Sno)FOREIGN KEY(Sno)REFERENCES Student(Sno)ON DELETE CASCADE /*ON DELE
15、TE CASCADE /*级联删除级联删除SCSC表中相应的元组表中相应的元组*/*/ON UPDATE CASCADE ON UPDATE CASCADE,/*/*级联更新级联更新SCSC表中相应的元组表中相应的元组*/*/FOREIGN KEY(Cno)REFERENCES Course(Cno)FOREIGN KEY(Cno)REFERENCES Course(Cno)ON DELETE NO ACTION ON DELETE NO ACTION /*/*当删除当删除course course 表中的元组造成了与表中的元组造成了与SCSC表不一样时拒绝删表不一样时拒绝删除除*/*/ON
16、UPDATE CASCADE ON UPDATE CASCADE /*/*当更新当更新coursecourse表中的表中的cnocno时,级联更新时,级联更新SCSC表中相应的元组表中相应的元组*/*/);21第五章第五章 数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义的完整性用户定义的完整性5.4 5.4 完整性约束命名字句完整性约束命名字句*5.5 *5.5 域中的完整性限制域中的完整性限制5.6 5.6 触发器触发器5.7 5.7 小结小结225.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性就是针对
17、某一具体应用的数用户定义的完整性就是针对某一具体应用的数据必需满足的语义要求据必需满足的语义要求 RDBMSRDBMS供应,而不必由应用程序担当供应,而不必由应用程序担当235.3 5.3 用户定义的完整性用户定义的完整性5.3.1 5.3.1 属性上的约束条件的定义属性上的约束条件的定义5.3.2 5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 5.3.3 5.3.3 元组上的约束条件的定义元组上的约束条件的定义 5.3.45.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理245.3.1 5.3.1 属性上的约束条件的定义属性上的约束条件的定义C
18、REATE TABLECREATE TABLE时定义时定义列值非空(列值非空(NOT NULLNOT NULL)列值唯一(列值唯一(UNIQUEUNIQUE)检查列值是否满足一个布尔表达式(检查列值是否满足一个布尔表达式(CHECKCHECK)25属性上的约束条件的定义属性上的约束条件的定义(续续)1.1.不允许取空值不允许取空值 例例5 5在定义在定义SCSC表时,说明表时,说明SnoSno、CnoCno、GradeGrade属属性不允许取空值。性不允许取空值。CREATE TABLE SC CREATE TABLE SC (Sno CHAR(9)NOT NULLSno CHAR(9)NOT
19、 NULL,Cno CHAR(4)NOT NULL Cno CHAR(4)NOT NULL,Grade SMALLINT NOT NULL Grade SMALLINT NOT NULL,PRIMARY KEY(Sno PRIMARY KEY(Sno,Cno)Cno),/*/*假如在表级定义实体完整性,隐含了假如在表级定义实体完整性,隐含了SnoSno,CnoCno不允许取空值,则在列级不允许取空值不允许取空值,则在列级不允许取空值的定义就不必写了的定义就不必写了*/*/););26属性上的约束条件的定义属性上的约束条件的定义(续续)2.2.列值唯一列值唯一 例例6 6建立部门表建立部门表DE
20、PTDEPT,要求部门名称,要求部门名称DnameDname列取值唯一,列取值唯一,部门编号部门编号DeptnoDeptno列为主码列为主码.CREATE TABLE DEPT CREATE TABLE DEPT (Deptno NUMERIC(2)(Deptno NUMERIC(2),Dname CHAR(9)Dname CHAR(9)UNIQUEUNIQUE,/*/*要求要求DnameDname列值唯一列值唯一*/*/Location CHAR(10)Location CHAR(10),PRIMARY KEY(Deptno)PRIMARY KEY(Deptno);27属性上的约束条件的定义
21、属性上的约束条件的定义(续续)3.3.用用CHECKCHECK短语指定列值应当满足的条件短语指定列值应当满足的条件例例7 7 Student Student表的表的SsexSsex只允许取只允许取“男男”或或“女女”。CREATE TABLE Student CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY (Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL Sname CHAR(8)NOT NULL,Ssex CHAR(2)CHECK(Ssex IN(Ssex CHAR(2)CHECK(Ssex IN(男男,女女
22、),/*/*性别属性性别属性SsexSsex只允许取只允许取 男男 或或 女女*/*/Sage SMALLINT Sage SMALLINT,Sdept CHAR(20)Sdept CHAR(20););285.3 5.3 用户定义的完整性用户定义的完整性5.3.1 5.3.1 属性上的约束条件的定义属性上的约束条件的定义5.3.2 5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 5.3.3 5.3.3 元组上的约束条件的定义元组上的约束条件的定义 5.3.45.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理295.3.2 5.3.2 属性上的约束
23、条件检查和违约处理属性上的约束条件检查和违约处理插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMSRDBMS检查属性检查属性上的约束条件是否被满足上的约束条件是否被满足假如不满足则操作被拒绝执行假如不满足则操作被拒绝执行 305.3 5.3 用户定义的完整性用户定义的完整性5.3.1 5.3.1 属性上的约束条件的定义属性上的约束条件的定义5.3.2 5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 5.3.3 5.3.3 元组上的约束条件的定义元组上的约束条件的定义 5.3.45.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理315.3
24、.3 5.3.3 元组上的约束条件的定义元组上的约束条件的定义在在CREATE TABLECREATE TABLE中可以用中可以用CHECKCHECK短语定义元组上短语定义元组上的约束条件,即的约束条件,即元组级的限制元组级的限制同属性值限制相比,元组级的限制可以设置不同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件同属性之间的取值的相互约束条件 32元组上的约束条件的定义元组上的约束条件的定义(续续)例例9 9当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以Ms.Ms.打头。打头。CREATE TABLE Student CREATE TABLE Stu
25、dent (Sno CHAR(9)(Sno CHAR(9),Sname CHAR(8)NOT NULL Sname CHAR(8)NOT NULL,Ssex CHAR(2)Ssex CHAR(2),Sage SMALLINT Sage SMALLINT,Sdept CHAR(20)Sdept CHAR(20),PRIMARY KEY(Sno)PRIMARY KEY(Sno),CHECK(Ssex=CHECK(Ssex=女女 OR Sname NOT LIKE OR Sname NOT LIKE Ms.%)Ms.%)/*/*定义了元组中定义了元组中SnameSname和和 Ssex Ssex两个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 完整性 优秀 PPT
限制150内