数据库系统概论第五章.ppt
《数据库系统概论第五章.ppt》由会员分享,可在线阅读,更多相关《数据库系统概论第五章.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统概论数据库系统概论An Introduction to Database System第五章第五章 数据库完整性数据库完整性An Introduction to Database System数据库完整性数据库完整性n n数据库的完整性数据库的完整性n n数据的数据的正确性正确性和和相容性相容性n n数据的完整性和安全性是两个不同概念数据的完整性和安全性是两个不同概念n n数据的完整性数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据确的数据防范对象:不合语义的、不正确的数据防范对象:不合语义的
2、、不正确的数据n n数据的安全性数据的安全性保护数据库防止恶意的破坏和非法的存取保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作防范对象:非法用户和非法操作数据库完整性数据库完整性(续续)为维护数据库的完整性,DBMS必须:n n1.1.提供定义完整性约束条件的机制提供定义完整性约束条件的机制n n2.2.提供完整性检查的方法提供完整性检查的方法n n3.3.违约处理违约处理第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域
3、中的完整性限制5.6 触发器触发器5.7 小结小结5.1 实体完整性实体完整性n n5.1.1 5.1.1 实体完整性定义实体完整性定义实体完整性定义实体完整性定义n n5.1.2 5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理 插入或对主码列进行更新操作时,插入或对主码列进行更新操作时,RDBMSRDBMS按照实体完整性规按照实体完整性规则自动进行检查。包括:则自动进行检查。包括:n n1.1.检查主码值是否唯一,如果不唯一则拒绝插入或修改检查主码值是否唯一,如果不唯一则拒绝插入或修改n n2.2.检查主码的各个属性是否为空,只要
4、有一个为空就拒绝插入或修检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改改n n检查记录中主码值是否唯一的一种方法是进行检查记录中主码值是否唯一的一种方法是进行全表扫描全表扫描n n 索引索引 第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结5.2 参照完整性参照完整性n n5.2.1 参照完整性定义参照完整性定义n n5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理
5、5.2.1 参照完整性定义参照完整性定义n n关系模型的参照完整性定义n n在在CREATE TABLECREATE TABLE中用中用FOREIGN KEYFOREIGN KEY短语定短语定义哪些列为外码义哪些列为外码n n用用REFERENCESREFERENCES短语指明这些外码参照哪些表短语指明这些外码参照哪些表的主码的主码 参照完整性定义参照完整性定义(续续)例如,关系例如,关系SCSC中一个元组表示一个学生选修的某门课程的成绩,中一个元组表示一个学生选修的某门课程的成绩,(SnoSno,CnoCno)是主码。)是主码。SnoSno,CnoCno分别参照引用分别参照引用Student
6、Student表的表的主码和主码和CourseCourse表的主码表的主码 例例3 3 定义定义SCSC中的参照完整性中的参照完整性 CREATE TABLE SCCREATE TABLE SC (SnoSno CHAR(9)NOT NULL CHAR(9)NOT NULL,CnoCno CHAR(4)NOT NULL CHAR(4)NOT NULL,Grade SMALLINTGrade SMALLINT,PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno),*在表级定义实体完整性在表级定义实体完整性*/FOREIGN KEY(FOREIGN KEY(SnoSno)R
7、EFERENCES)REFERENCES Student(SnoStudent(Sno),/*/*在表级定义参照完整性在表级定义参照完整性*/FOREIGN KEY(FOREIGN KEY(CnoCno)REFERENCES)REFERENCES Course(CnoCourse(Cno)/*/*在表级定义参照完整性在表级定义参照完整性*/););5.2 参照完整性参照完整性n n5.2.1 5.2.1 参照完整性定义参照完整性定义参照完整性定义参照完整性定义n n5.2.2 5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理被参照表(
8、例如被参照表(例如StudentStudent)参照表(例如参照表(例如SCSC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连删除级连删除/设置为空设置为空值值修改主码值修改主码值 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连修改级连修改/设置为空设置为空值值参照完整性检查和违约处理参照完整性检查和违约处理可能破坏参照完整性的情况及违约处理被参照表(例如被参照表(例如StudentStudent)参照表(例如参照表(例如S
9、CSC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照完整可能破坏参照完整性性拒绝拒绝/级连删除级连删除/设置为设置为空值空值修改主码值修改主码值 可能破坏参照完整可能破坏参照完整性性拒绝拒绝/级连修改级连修改/设置为设置为空值空值第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器
10、5.7 小结小结5.3 用户定义的完整性用户定义的完整性n n用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 n nRDBMS提供,而不必由应用程序承担5.3 用户定义的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.1 属性上的约束条件的定义属性上的约束条件的定义n nCREATE TABLE时定义n n列值非空(列值
11、非空(NOT NULLNOT NULL)n n列值唯一(列值唯一(UNIQUEUNIQUE)n n检查列值是否满足一个布尔表达式(检查列值是否满足一个布尔表达式(CHECKCHECK)属性上的约束条件的定义属性上的约束条件的定义(续续)n n1.1.不允许取空值不允许取空值 例例5 5 在定义在定义SCSC表时,说明表时,说明SnoSno、CnoCno、GradeGrade属性不允许属性不允许取空值。取空值。CREATE TABLE SCCREATE TABLE SC (SnoSno CHAR(9)CHAR(9)NOT NULLNOT NULL,CnoCno CHAR(4)CHAR(4)NOT
12、 NULLNOT NULL,Grade SMALLINT Grade SMALLINT NOT NULLNOT NULL,PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno),/*/*如果在表级定义实体完整性,隐含了如果在表级定义实体完整性,隐含了SnoSno,CnoCno不允不允许取空值,则在列级不允许取空值的定义就不必写了许取空值,则在列级不允许取空值的定义就不必写了 */););属性上的约束条件的定义属性上的约束条件的定义(续续)n n2.2.列值唯一列值唯一 例例6 6 建立部门表建立部门表DEPTDEPT,要求部门名称,要求部门名称DnameDname列取值唯
13、列取值唯一,部门编号一,部门编号DeptnoDeptno列为主码列为主码 CREATE TABLE DEPTCREATE TABLE DEPT (DeptnoDeptno NUMERIC(2)NUMERIC(2),DnameDname CHAR(9)CHAR(9)UNIQUEUNIQUE,/*/*要求要求DnameDname列值唯一列值唯一*/Location CHAR(10)Location CHAR(10),PRIMARY KEY(PRIMARY KEY(DeptnoDeptno);属性上的约束条件的定义属性上的约束条件的定义(续续)n n3.3.用用CHECKCHECK短语指定列值应该满
14、足的条件短语指定列值应该满足的条件例例7 7 StudentStudent表的表的SsexSsex只允许取只允许取“男男”或或“女女”。CREATE TABLE StudentCREATE TABLE Student (SnoSno CHAR(9)PRIMARY KEY CHAR(9)PRIMARY KEY,SnameSname CHAR(8)NOT NULL CHAR(8)NOT NULL,SsexSsex CHAR(2)CHAR(2)CHECK(CHECK(SsexSsex IN(IN(男男,女女),/*/*性别属性性别属性SsexSsex只允许取只允许取 男男 或或 女女*/*/Sage
15、 SMALLINT Sage SMALLINT,SdeptSdept CHAR(20)CHAR(20););5.3 用户定义的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.2 属性上的约束条件检查和违约属性上的约束条件检查和违约处理处理n n插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足n n如果不满足则操作被拒
16、绝执行 5.3 用户定义的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.3 元组上的约束条件的定义元组上的约束条件的定义n n在在CREATE TABLECREATE TABLE时可以用时可以用CHECKCHECK短语定义元组短语定义元组上的约束条件,即上的约束条件,即元组级的限制元组级的限制n n同属性值限制相比,元组级的限制可以
17、同属性值限制相比,元组级的限制可以设置不同设置不同属性之间的取值的相互约束条件属性之间的取值的相互约束条件 元组上的约束条件的定义元组上的约束条件的定义(续续)例例9 9 当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以Ms.Ms.打头。打头。CREATE TABLE StudentCREATE TABLE Student (SnoSno CHAR(9)CHAR(9),SnameSname CHAR(8)NOT NULL CHAR(8)NOT NULL,SsexSsex CHAR(2)CHAR(2),Sage SMALLINTSage SMALLINT,SdeptSdept C
18、HAR(20)CHAR(20),PRIMARY KEY(PRIMARY KEY(SnoSno),CHECK(CHECK(SsexSsex=女女女女 OR OR SnameSname NOT LIKE Ms.%)NOT LIKE Ms.%)/*/*定义了元组中定义了元组中SnameSname和和 SsexSsex两个属性值之间的约束条件两个属性值之间的约束条件*/);性别是女性的元组都能通过该项检查,因为性别是女性的元组都能通过该项检查,因为SsexSsex=女女 成立;成立;当性别是男性时,要通过检查则名字一定不能以当性别是男性时,要通过检查则名字一定不能以Ms.Ms.打头打头5.3 用户定义
19、的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4 元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.4 元组上的约束条件检查和违约元组上的约束条件检查和违约处理处理n n插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMSRDBMS检查元组上检查元组上的约束条件是否被满足的约束条件是否被满足n n如果不满足则操作被拒绝执行如果不满足则操作被拒绝执行 第五章第五章 数据库完
20、整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名子句完整性约束命名子句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结5.4 完整性约束命名子句完整性约束命名子句n nCONSTRAINT 约束CONSTRAINT CONSTRAINT PRIMARY KEYPRIMARY KEY短语短语|FOREIGN KEY|FOREIGN KEY短语短语|CHECK|CHECK短语短语例例1010 建立学生登记表建立学生登记表StudentStudent,要求学号在,要求学号在900009
21、99999000099999之间,之间,姓名不能取空值,年龄小于姓名不能取空值,年龄小于3030,性别只能是,性别只能是“男男”或或“女女”。CREATE TABLE StudentCREATE TABLE Student (SnoSno NUMERIC(6)NUMERIC(6)CONSTRAINT C1 CHECK(CONSTRAINT C1 CHECK(SnoSno BETWEEN 90000 AND 99999)BETWEEN 90000 AND 99999),SnameSname CHAR(20)CHAR(20)CONSTRAINT C2 NOT NULLCONSTRAINT C2 N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 第五
限制150内