Windows Server数据库课件--第05章 数据库完整性(3学时)new.ppt
《Windows Server数据库课件--第05章 数据库完整性(3学时)new.ppt》由会员分享,可在线阅读,更多相关《Windows Server数据库课件--第05章 数据库完整性(3学时)new.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统概论数据库系统概论An Introduction to Database System第五章第五章 数据库完整性数据库完整性1AnIntroductiontoDatabaseSystem第五章第五章第五章第五章 数据库完整性数据库完整性数据库完整性数据库完整性什么是数据库的完整性什么是数据库的完整性什么是数据库的完整性什么是数据库的完整性?n数据的数据的正确性正确性和和相容性相容性n防止不合语义的、不正确的数据进入数据库。防止不合语义的、不正确的数据进入数据库。例例:学生的年龄必须是整数,取值在学生的年龄必须是整数,取值在6-506-50间;间;学生的性别只能是男或女;学生的性别只能
2、是男或女;学生的学号一定是唯一的;学生的学号一定是唯一的;学生所在的系必须是学校已有的系;学生所在的系必须是学校已有的系;n完整性:保证数据库能否真实地反映现实世界完整性:保证数据库能否真实地反映现实世界.区别数据区别数据完整性完整性和和安全性安全性的两个概念。的两个概念。2AnIntroductiontoDatabaseSystem 完整性约束条件是数据模型的组成部分,完整性约束条件是数据模型的组成部分,约束数据库中数据的语义。约束数据库中数据的语义。检查用户发出的操作请求是否违背了完整检查用户发出的操作请求是否违背了完整性约束条件性约束条件。操作违背了完整性约束条件,则采取一定的操作违背了
3、完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作操作操作操作来保证数据的完整性。来保证数据的完整性。来保证数据的完整性。来保证数据的完整性。为保证完整性,为保证完整性,为保证完整性,为保证完整性,DBMSDBMS必须做到:必须做到:必须做到:必须做到:1.1.完整性约束条件定义机制完整性约束条件定义机制2.2.完整性检查机制完整性检查机制3.3.违约反应违约反应 第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性3AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性
4、数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器4AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性1.1.实体完整性定义实体完整性定义 在在CREATE TABLECREATE TABLE语句中用语句中用PRIMARY KEYPRIMARY KEY定义定义 码由单字段构成码由单字段构成:定义可以为列级或表级约束;定义可以为列级或表
5、级约束;码由多字段构成:码由多字段构成:定义只能为表级约束;定义只能为表级约束;5AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性 例例11在数据库中,定义在数据库中,定义StudentStudent表的表的SnoSno属性为主码。属性为主码。定义在列级约束定义在列级约束:CREATE TABLE Student CREATE TABLE Student (SnoSno CHAR(8),CHAR(8),SnameSname CHAR(8),CHAR(8),Sage INT);Sage INT);定义在表级约束:
6、定义在表级约束:CREATE TABLE Student CREATE TABLE Student (SnoSno CHAR(8)CHAR(8),SnameSname CHAR(8),CHAR(8),Sage INT Sage INT,););PRIMARY KEY,PRIMARY KEY(Sno););6AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性 例例22在在SCSC表中定义表中定义(Sno,CnoSno,Cno)为主码。为主码。CREATE TABLE SC CREATE TABLE SC (SnoS
7、no CHAR(5),CHAR(5),CnoCno CHAR(2),CHAR(2),Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno););7AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性2.2.2.2.实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理 (1)(1)完整性检查完整性检查 当用户进行当用户进行插入记录插入记录或或修改主码修改主码时,时,DBMSDBMS系统自系统自
8、动检查:动检查:检查主码值是否惟一;检查主码值是否惟一;检查每个主属性值是否为空。检查每个主属性值是否为空。(2)(2)违约处理违约处理 拒绝插入或修改操作。拒绝插入或修改操作。8AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性2.2.2.2.实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理 (3)(3)检查主码是否惟一的方法检查主码是否惟一的方法 全表扫描全表扫描依次判断表中每一个记录的主码值与插入记依次判断表中每一个记录的主码值与插入记录的主码值是否一致。录的
9、主码值是否一致。缺点缺点:效率低:效率低 利用主码的利用主码的B B索引索引优点优点:效率高:效率高9AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性keyF1F2F332520159379658471517304154656968255112 3066 783 715 20 25 30 4151 54 6568 69 71 7679 84 9310AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体
10、完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器11AnIntroductiontoDatabaseSystem5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性1.1.1.1.参照完整性定义参照完整性定义参照完整性定义参照完整性定义 在在CREATE TABLECREATE TABLE语句中:语句中:用用 FOREIGN KEY FOREIGN KEY 短语定义外码列;短语定义外码列;用用 REFERENCES REFERENCES 短语指明外码参照哪个
11、表的主短语指明外码参照哪个表的主码。码。12AnIntroductiontoDatabaseSystem5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 例例33在在SCSC表中的参照完整性。表中的参照完整性。CREATE TABLE SC CREATE TABLE SC CREATE TABLE SC CREATE TABLE SC (SnoSnoSnoSno CHAR(8)CHAR(8)CHAR(8)CHAR(8)NOT NULLNOT NULLNOT NULLNOT NULL,CnoCnoCnoCno CHAR(3)NOT NULL,CHAR(3)NOT NULL
12、,CHAR(3)NOT NULL,CHAR(3)NOT NULL,Grade SMALLINT,Grade SMALLINT,Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(PRIMARY KEY(PRIMARY KEY(PRIMARY KEY(SnoSnoSnoSno,CnoCnoCnoCno),),),),FOREIGN KEY(FOREIGN KEY(FOREIGN KEY(FOREIGN KEY(CnoCnoCnoCno)REFERENCES)REFERENCES)REFERENCES)REFERENCES course(Cnocourse(Cnoc
13、ourse(Cnocourse(Cno)ON DELETE CASCADEON DELETE CASCADEON DELETE CASCADEON DELETE CASCADE ););););REFERENCES REFERENCES REFERENCES REFERENCES student(Snostudent(Snostudent(Snostudent(Sno),),),),13AnIntroductiontoDatabaseSystem5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 例例33在在SCSC表中的参照完整性。表中的参照完整性。ALTER TABL
14、E SC ALTER TABLE SC ALTER TABLE SC ALTER TABLE SC ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)14AnIntroductiontoDatabaseSystem2.2.参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检
15、查和违约处理 对被对被参照表和参照表进行参照表和参照表进行增、删、改增、删、改操作操作时进行检查时进行检查有四种情况可能破坏参照完整性:有四种情况可能破坏参照完整性:参照表中参照表中l插入一个新元组;插入一个新元组;l修改外码值;修改外码值;被参照表中被参照表中l删除一个元组;删除一个元组;l修改主码值。修改主码值。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性15AnIntroductiontoDatabaseSystem 当参照完整性不一致时,系统采取以下策略:当参照完整性不一致时,系统采取以下策略:n拒绝执行拒绝执行(默认策略)(默认策略)n级联操作级联操作(C
16、ASCADE)当删除或修改被参照表的一个元组造成与当删除或修改被参照表的一个元组造成与参照表不一致时,则删除或修改参照表中所有参照表不一致时,则删除或修改参照表中所有不一致的元组。不一致的元组。n设置为空设置为空(SET-NULL)当删除或修改被参照表的一个元组造成与当删除或修改被参照表的一个元组造成与参照表不一致时,则将参照表中所有造成不一参照表不一致时,则将参照表中所有造成不一致的元组对应属性置空。致的元组对应属性置空。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 定义参照完整性时,除了定义外码,还应定义参照完整性时,除了定义外码,还应定义外码是否允许为空。定义
17、外码是否允许为空。16AnIntroductiontoDatabaseSystem例:要删除例:要删除StudentStudent关系中关系中SnoSno=950001950001的元组,而的元组,而SCSC关系中有关系中有4 4个元组个元组的的SnoSno都等于都等于950001950001。n置空值删除置空值删除:将将SCSC关系中所有关系中所有SnoSno=950001=950001的元组的元组SnoSno置空。置空。n级联删除级联删除:将将SCSC关系中所有关系中所有4 4个个SnoSno=950001=950001的元组一的元组一起删除。依此类推可以继续级联下去。起删除。依此类推可以
18、继续级联下去。n受限删除受限删除:系统将拒绝执行此删除操作。系统将拒绝执行此删除操作。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性17AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器18AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完
19、整性用户定义的完整性用户定义的完整性用户定义的完整性1.1.1.1.属性上约束条件的定义属性上约束条件的定义属性上约束条件的定义属性上约束条件的定义 使用使用CREATE TABLECREATE TABLE语句在定义属性的同时,语句在定义属性的同时,定义定义对属性值的限制对属性值的限制。包括:包括:列值非空列值非空(NOT NULL)(NOT NULL)列值唯一列值唯一(UNIQUE)(UNIQUE)检查列值是否满足一个布尔表达式检查列值是否满足一个布尔表达式(CHECK(CHECK子子句句)。19AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户
20、定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 (1)(1)不允许取空值不允许取空值 例例例例5555在定义在定义在定义在定义SCSCSCSC表时,说明表时,说明表时,说明表时,说明SnoSnoSnoSno、CnoCnoCnoCno属性不取空属性不取空属性不取空属性不取空 CREATE TABLE SC CREATE TABLE SC (SnoSno CHAR(5)CHAR(5)NOT NULLNOT NULL,CnoCno CHAR(2)CHAR(2)NOT NULLNOT NULL,Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(PRIMA
21、RY KEY(SnoSno,CnoCno););20AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性(2)(2)列值惟一列值惟一 例例例例6666建立部门表建立部门表建立部门表建立部门表DeptDeptDeptDept,要求部门名称,要求部门名称,要求部门名称,要求部门名称DnameDnameDnameDname惟一,惟一,惟一,惟一,部门编号为主码。部门编号为主码。部门编号为主码。部门编号为主码。CREATE TABLE Dept CREATE TABLE Dept (DnoDno N
22、UMERIC(2)NOT NULL,NUMERIC(2)NOT NULL,DnameDname CHAR(20)CHAR(20)UNIQUE UNIQUE,Location CHAR(10),Location CHAR(10),PRIMARY KEY(PRIMARY KEY(DnoDno););21AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性(2)(2)列值惟一列值惟一 例例例例6666补充补充补充补充 若部门表若部门表若部门表若部门表DeptDeptDeptDept已建立,添加部门
23、名称已建立,添加部门名称已建立,添加部门名称已建立,添加部门名称DnameDnameDnameDname惟一的约束。惟一的约束。惟一的约束。惟一的约束。ALTER TABLE Dept ALTER TABLE Dept ADD ADD UNIQUE(DnameUNIQUE(Dname););22AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 例例例例7Student7Student7Student7Student表中表中表中表中SsexSsexSsexSsex只允许取只允许取只允许取只
24、允许取“男男男男”和和和和“女女女女”。CREATE TABLE Student CREATE TABLE Student (SnoSno CHAR(5)PRIMARY KEY,CHAR(5)PRIMARY KEY,SnameSname CHAR(8)NOT NULL,CHAR(8)NOT NULL,SsexSsex CHAR(2)CHECK CHAR(2)CHECK(SsexSsex IN(IN(男男男男,女女女女),Sage SMALLINT,Sage SMALLINT,SdeptSdept CHAR(20)CHAR(20););(3)(3)用用CHECKCHECK短语短语指定列值应该满足
25、的条件指定列值应该满足的条件23AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 例例例例7777补充补充补充补充 向向向向StudentStudentStudentStudent表添加表添加表添加表添加SsexSsexSsexSsex只许取只许取只许取只许取“男男男男”和和和和“女女女女”的的的的约束。约束。约束。约束。ALTER TABLE Student ALTER TABLE Student ADD CHECK ADD CHECK(SsexSsex IN(IN(男男男男,女女女女
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows Server数据库课件-第05章 数据库完整性3学时new Server 数据库 课件 05 完整性 学时 new
限制150内