db-chapter05 完整性.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《db-chapter05 完整性.ppt》由用户(hwpkd79526)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- db_chapter05 完整性
- 资源描述:
-
1、普通高等教育十五规划教材普通高等教育十五规划教材数据库系统概论数据库系统概论 第第5章章 数据库完整性数据库完整性张中军张中军2023年4月29日星期六数据库系统原理3第第5章章 完整性完整性 n数据库是一种共享资源,是存放数据的场所。数据库是一种共享资源,是存放数据的场所。n数据库系统需要保护数据库,防止用户数据库系统需要保护数据库,防止用户有意有意或或无意无意地破坏地破坏数据。数据。n数据的完整性和安全性是一个问题的两个方面,都是为了数据的完整性和安全性是一个问题的两个方面,都是为了保护数据库中的数据。保护数据库中的数据。n数据完整性数据完整性旨在保护数据库中的数据,旨在保护数据库中的数据
2、,防止合法用户对防止合法用户对数据库进行修改时破坏数据的一致性;数据库进行修改时破坏数据的一致性;n数据安全性数据安全性旨在保护数据库,防止未经授权的访问和恶旨在保护数据库,防止未经授权的访问和恶意破坏和修改。意破坏和修改。2023年4月29日星期六数据库系统原理4第第5章章 完整性完整性 n完整性概述完整性概述n5.1 实体完整性实体完整性n5.2 参照完整性参照完整性n5.3 用户定义的完整性用户定义的完整性n5.4 完整性约束命名字句完整性约束命名字句n5.5 触发器触发器完整性概述完整性概述2023年4月29日星期六数据库系统原理6完整性概述完整性概述n数据库的数据库的完整性完整性是指
3、数据库中的数据的正确性、一致性和是指数据库中的数据的正确性、一致性和相容性。相容性。n数据库中的数据要成为有意义的信息,必须满足一定的语数据库中的数据要成为有意义的信息,必须满足一定的语义约束条件。义约束条件。n关系数据库上约束分为关系数据库上约束分为n实体完整性实体完整性n参照完整性参照完整性n用户定义的完整性用户定义的完整性2023年4月29日星期六数据库系统原理7完整性概述完整性概述n所有的约束都是语义约束,所有的约束都是语义约束,都是用户根据实际问题的语义都是用户根据实际问题的语义指定的指定的n实体完整性和参照完整性约束的含义是特定的,用户只实体完整性和参照完整性约束的含义是特定的,用
4、户只需要说明关系的主码和外码,而不必再说明约束条件需要说明关系的主码和外码,而不必再说明约束条件n对于其他约束(用户定义的完整性),用户需要具体说对于其他约束(用户定义的完整性),用户需要具体说明约束条件。明约束条件。2023年4月29日星期六数据库系统原理8约束分类约束分类n根据被约束的数据对象,完整性约束可以分为如下四类:根据被约束的数据对象,完整性约束可以分为如下四类:n类型(域)约束类型(域)约束:说明给定类型的合法取值。:说明给定类型的合法取值。n属性约束属性约束:说明属性的合法取值。:说明属性的合法取值。n关系约束关系约束:说明关系的合法取值。:说明关系的合法取值。n数据库约束数据
5、库约束:说明数据库的合法取值,通常涉及多个关:说明数据库的合法取值,通常涉及多个关系系n实体完整性是一种关系约束,参照完整性是一种数据库约实体完整性是一种关系约束,参照完整性是一种数据库约束,而用户定义的完整性可以是上述四种约束的任何一种。束,而用户定义的完整性可以是上述四种约束的任何一种。2023年4月29日星期六数据库系统原理9约束分类约束分类(续续)n约束还可以分约束还可以分静态约束静态约束和和动态约束动态约束n静态约束是关于数据库正确状态的约束;静态约束是关于数据库正确状态的约束;n动态约束是数据库从一种正确状态转移到另一种状态的动态约束是数据库从一种正确状态转移到另一种状态的转移约束
6、转移约束n例如,对于婚姻状况,如下动态转移约束是正确的例如,对于婚姻状况,如下动态转移约束是正确的n未婚到已婚、已婚到离异、已婚到丧偶、离异到已婚、未婚到已婚、已婚到离异、已婚到丧偶、离异到已婚、丧偶到已婚。丧偶到已婚。n对于最后学位,如下动态转移约束是正确的:学士到硕对于最后学位,如下动态转移约束是正确的:学士到硕士、学士到博士、硕士到博士。士、学士到博士、硕士到博士。n说明:说明:n属性约束、表约束和参照完整性约束都可以在创建表时属性约束、表约束和参照完整性约束都可以在创建表时说明说明2023年4月29日星期六数据库系统原理10DBMS对完整性的支持对完整性的支持n为了维护数据库的完整性,
7、完整性控制必须提供:为了维护数据库的完整性,完整性控制必须提供:n说明和定义完整性约束条件的方法说明和定义完整性约束条件的方法nDBMS的的DDL允许用户根据实际问题的语义说明和定允许用户根据实际问题的语义说明和定义各种完整性约束条件。义各种完整性约束条件。n完整性检查机制完整性检查机制nDBMS在数据更新可能破坏完整性时自动进行完整性在数据更新可能破坏完整性时自动进行完整性检查。检查可以在更新操作执行时立即执行,也可以检查。检查可以在更新操作执行时立即执行,也可以在事务提交时进行。在事务提交时进行。n违约处理违约处理n当数据更新违反完整性约束时,当数据更新违反完整性约束时,DBMS应当采取相
8、应应当采取相应的措施,确保数据的完整性。的措施,确保数据的完整性。2023年4月29日星期六数据库系统原理11DBMS对完整性的支持对完整性的支持(续续)n说明说明n数据库约束数据库约束的检查是可延迟的,可以延迟到事务提交时的检查是可延迟的,可以延迟到事务提交时进行进行n其他约束的检查是立即的,在可能导致违反完整性约束其他约束的检查是立即的,在可能导致违反完整性约束的更新时立即进行的更新时立即进行n所有数据库更新都不能破坏数据库的完整性所有数据库更新都不能破坏数据库的完整性n当更新违反参照完整性约束时存在多种可能的补救措施,当更新违反参照完整性约束时存在多种可能的补救措施,可以允许更新,并自动
9、采取相应的行动(见可以允许更新,并自动采取相应的行动(见5.2节)节)n在其他情况下(如违反实体完整性和违反用户定义的完在其他情况下(如违反实体完整性和违反用户定义的完整性约束),违反完整性约束的更新通常被拒绝整性约束),违反完整性约束的更新通常被拒绝nDBMS也提供一些机制,使得也提供一些机制,使得用户可以说明对某些违反用户可以说明对某些违反完整性约束的更新所采取的行动完整性约束的更新所采取的行动(见(见5.5节)节)5.1实体完整性实体完整性2023年4月29日星期六数据库系统原理13实体完整性实体完整性n在关系数据库中,一个基本关系对应于一个实体集或联系在关系数据库中,一个基本关系对应于
10、一个实体集或联系集集n实体完整性约束是一个关系内的约束实体完整性约束是一个关系内的约束n实体完整性规则实体完整性规则n每个关系应该有一个主码,每个元组的主码值唯一确定每个关系应该有一个主码,每个元组的主码值唯一确定该元组该元组n主码的任何属性都不能取空值主码的任何属性都不能取空值n何时可能破坏实体完整性何时可能破坏实体完整性n删除操作不会破坏实体完整性删除操作不会破坏实体完整性n插入新元组和修改某个(些)元组的主码可能破坏实体插入新元组和修改某个(些)元组的主码可能破坏实体完整性完整性2023年4月29日星期六数据库系统原理14实体完整性实体完整性(续续)n何时检查实体完整性和处理措施何时检查
11、实体完整性和处理措施nDBMS应当在应当在插入新元组和修改元组的主码插入新元组和修改元组的主码时自动检查时自动检查是否导致违反实体完整性约束是否导致违反实体完整性约束n拒绝导致破坏实体完整性约束的任何插入或修改拒绝导致破坏实体完整性约束的任何插入或修改n判断主属性是否为空值是简单的判断主属性是否为空值是简单的n主码唯一性检查主码唯一性检查n为了有效地判定主码上的值是否唯一,通常为了有效地判定主码上的值是否唯一,通常DBMS自动自动在主码上建立索引(如在主码上建立索引(如B+树索引)树索引)n通过索引查找而不必访问任何元组就能确定主码上的值通过索引查找而不必访问任何元组就能确定主码上的值是否唯一
12、。是否唯一。2023年4月29日星期六数据库系统原理15主码说明主码说明n SQL对实体完整性的支持对实体完整性的支持n用户只需要在创建基本表时用户只需要在创建基本表时说明关系的主码说明关系的主码,系统就,系统就能够自动地保证实体完整性能够自动地保证实体完整性nSQL说明主码的方法已在第说明主码的方法已在第3章讨论,如下:章讨论,如下:n关系模型的实体完整性关系模型的实体完整性nCREATE TABLE中用中用PRIMARY KEY定义定义2023年4月29日星期六数据库系统原理16主码说明(续)主码说明(续)n单属性构成的码有两种说明方法单属性构成的码有两种说明方法 n定义为列级约束条件定义
13、为列级约束条件n定义为表级约束条件定义为表级约束条件n对多个属性构成的码只有一种说明方法对多个属性构成的码只有一种说明方法n定义为表级约束条件定义为表级约束条件 2023年4月29日星期六数据库系统原理17主码说明(续)主码说明(续)(1)在列级定义主码在列级定义主码 CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);例例1 将将Student表中的表中的Sno属性定义为码属性定义为码2023年4月29日星期六数据库系统原理1
14、8主码说明(续)主码说明(续)(2)在表级定义主码在表级定义主码 CREATE TABLE Student (Sno CHAR(9),Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno);2023年4月29日星期六数据库系统原理19主码说明(续)主码说明(续)CREATE TABLE SC (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno)/*只能在表级定义主码只能在表级定义主码*/)
15、;例例2将将SC表中的表中的Sno,Cno属性组定义为码属性组定义为码5.2参照完整性参照完整性2023年4月29日星期六数据库系统原理21参照完整性参照完整性n参照完整性约束是不同关系之间或同一关系的不同元组间参照完整性约束是不同关系之间或同一关系的不同元组间的约束的约束n参照完整性规则参照完整性规则n参照关系参照关系R的任何元组在其外码的任何元组在其外码FKR上的值或者等于被参上的值或者等于被参照关系照关系S的某个元组在主码的某个元组在主码Ks上的值,或者为空值。上的值,或者为空值。n即,参照完整性要求要么不参照(外码取空值),要么即,参照完整性要求要么不参照(外码取空值),要么被参照的对
16、象必须存在被参照的对象必须存在2023年4月29日星期六数据库系统原理22参照完整性定义参照完整性定义(续续)例例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)/
17、*在表级定义参照完整性在表级定义参照完整性*/);例如,关系例如,关系SC中一个元组表示一个学生选修的某门课程的中一个元组表示一个学生选修的某门课程的成绩,(成绩,(Sno,Cno)是主码。)是主码。Sno,Cno分别参照引用分别参照引用Student表的主码和表的主码和Course表的主码表的主码2023年4月29日星期六数据库系统原理23参照完整性参照完整性(续续)n说明说明nDBMS应当支持实体完整性和参照完整性约束应当支持实体完整性和参照完整性约束n然而,与实体完整性不同,然而,与实体完整性不同,违反参照完整性存在不同的违反参照完整性存在不同的处理方案,处理方案,DBMS允许用户根据实
18、际情况选择不同的处允许用户根据实际情况选择不同的处理方法。理方法。n设设R 为参照关系,其外码为参照关系,其外码FKR;S 为被参照关系,其主码为为被参照关系,其主码为Ksn删除参照关系删除参照关系R 的元组或的元组或向被参照关系向被参照关系S 插入新元组都插入新元组都不会违反参照完整性不会违反参照完整性n在其他情况下可能破坏参照完整性在其他情况下可能破坏参照完整性2023年4月29日星期六数据库系统原理24参照完整性参照完整性(续续)n2.违反参照完整性的更新违反参照完整性的更新n向参照关系向参照关系R中插入新元组中插入新元组tRn如果不存在被参照关系如果不存在被参照关系S的元组的元组tS使
19、得使得tRFKR=tSKs,则破坏参照完整性。则破坏参照完整性。n从被参照关系从被参照关系S中删除元组中删除元组tSn如果存在参照关系如果存在参照关系R的元组的元组tR使得使得tSKs=tRFKR,则,则破坏参照完整性(删除导致破坏参照完整性(删除导致tR违反参照完整性)违反参照完整性)n修改参照关系修改参照关系R的元组的元组tR外码上的值外码上的值n如 果 不 存 在 被 参 照 关 系如 果 不 存 在 被 参 照 关 系 S 的 元 组的 元 组 tS使 得使 得new(tRFKR)=tSKs,则破坏参照完整性。其中,则破坏参照完整性。其中new(tRFKR)表示元组表示元组tR修改修改
20、后后在外码上的值在外码上的值2023年4月29日星期六数据库系统原理25参照完整性参照完整性(续续)n修改被参照关系修改被参照关系S的元组的元组tS主码上的值主码上的值n如果存在参照关系如果存在参照关系R的元组,的元组,tR 使得使得old(tSKs)=tRFKR,则破坏参照完整性(修改导致,则破坏参照完整性(修改导致tR违反参照违反参照完整性)完整性)n其中其中old(tSKs)表示元组表示元组tS修改前在主码上的值。修改前在主码上的值。n在上述四种情况下,在上述四种情况下,DBMS应当自动进行参照完整性检查,应当自动进行参照完整性检查,即下表情况即下表情况2023年4月29日星期六数据库系
21、统原理26参照完整性参照完整性(续续)被参照表(例如被参照表(例如Student)参照表(例如参照表(例如SC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连删除级连删除/设置为空值设置为空值修改主码值修改主码值 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连修改级连修改/设置为空值设置为空值2023年4月29日星期六数据库系统原理27参照完整性参照完整性(续续)n3.保证参照完整性的措施保证参照完整性的措施n当更新导致破坏参
22、照完整性时,可能的处理措施包括:当更新导致破坏参照完整性时,可能的处理措施包括:n拒绝、级联、置空值和置缺省值拒绝、级联、置空值和置缺省值n(1)拒绝:拒绝违反参照完整性的更新拒绝:拒绝违反参照完整性的更新n是最简单的处理措施是最简单的处理措施n拒绝可以用于以上拒绝可以用于以上4种情况的任何一种。种情况的任何一种。n对于表中情况对于表中情况1和和2(即向参照关系中插入新元组修即向参照关系中插入新元组修改参照关系的元组外码上的值改参照关系的元组外码上的值),一般只能拒绝。),一般只能拒绝。n对于情况对于情况3和和4(从被参照关系中删除元组修改被参从被参照关系中删除元组修改被参照关系照关系R的元组
23、主码上的值的元组主码上的值)还有其他有意义的选择)还有其他有意义的选择n当更新被拒绝时,系统应当返回一个出错信息提示用户当更新被拒绝时,系统应当返回一个出错信息提示用户2023年4月29日星期六数据库系统原理28参照完整性参照完整性(续续)n(2)级联:进行更新,并且对更新导致违反参照完整性的参级联:进行更新,并且对更新导致违反参照完整性的参照关系元组进行相应更新。具体地说,照关系元组进行相应更新。具体地说,n当删除被参照关系当删除被参照关系S中的元组中的元组tS破坏参照完整性时,同时破坏参照完整性时,同时删除参照关系删除参照关系R中所有违反参照完整性的元组中所有违反参照完整性的元组tRn修改
24、被参照关系修改被参照关系S的元组的元组tS主码上的值而破坏参照完整性主码上的值而破坏参照完整性时,同时用时,同时用tS主码上的新值修改参照关系主码上的新值修改参照关系R上违反参照完上违反参照完整性的元组整性的元组tR的外码的外码2023年4月29日星期六数据库系统原理29参照完整性参照完整性(续续)n例如例如n学号为学号为2010001的学生退学,删除的学生退学,删除Students中学号为中学号为2010001的的Students元组的同时删除元组的同时删除SC中中Sno=2010001的选课记录的选课记录n而学号为而学号为2010001的学生的学号修改为的学生的学号修改为2010030时,
25、可以时,可以同时将同时将SC中中Sno=2010001的元组的的元组的Sno修改为修改为20100302023年4月29日星期六数据库系统原理30参照完整性参照完整性(续续)n(3)置空值:进行更新,并且对更新导致违反参照完整性的置空值:进行更新,并且对更新导致违反参照完整性的参照关系元组的外码置空值参照关系元组的外码置空值n这种处理方法仅当外码允许取空值时才能使用这种处理方法仅当外码允许取空值时才能使用n 例如,如果允许教师所在院系属性取空值(尚未分配例如,如果允许教师所在院系属性取空值(尚未分配到具体院系),当学校的某个院系撤销时,可以在删到具体院系),当学校的某个院系撤销时,可以在删除
展开阅读全文