第十章数据库完整性ppt课件_第1页
第十章数据库完整性ppt课件_第2页
第十章数据库完整性ppt课件_第3页
第十章数据库完整性ppt课件_第4页
第十章数据库完整性ppt课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十章第十章 数据库完好性数据库完好性概述概述v什么是数据库的完好性什么是数据库的完好性v数据的正确性和相容性数据的正确性和相容性v防止不合语义的数据进入数据库防止不合语义的数据进入数据库v例例: 学生的年龄必需是整数,取值范学生的年龄必需是整数,取值范围为围为14-29;v 学生的性别只能是男或女;学生的性别只能是男或女;v 学生的学号一定是独一的;学生的学号一定是独一的;v 学生所在的系必需是学校开设的学生所在的系必需是学校开设的系;系;v完好性:否真实地反映现实世界完好性:否真实地反映现实世界完好性控制机制完好性控制机制1.完好性约束条件定义机制完好性约束条件定义机制完好性约束条件:数据

2、模型的组成部分约束数据库完好性约束条件:数据模型的组成部分约束数据库中数据的语义中数据的语义DBMS应提供定义数据库完好性约束条件,并把它应提供定义数据库完好性约束条件,并把它们作为方式的一部分存入数据库中们作为方式的一部分存入数据库中2.完好性检查机制完好性检查机制检查用户发出的操作恳求能否违背了完好性约束条检查用户发出的操作恳求能否违背了完好性约束条件件3.违约反响违约反响 假设发现用户的操作恳求使数据违背了完好性约束假设发现用户的操作恳求使数据违背了完好性约束条件,那么采取一定的动作来保证数据的完好性条件,那么采取一定的动作来保证数据的完好性10.1 完好性约束条件完好性约束条件v完好性

3、约束条件作用的对象完好性约束条件作用的对象v列:对属性的取值类型、范围、精度等的约束条列:对属性的取值类型、范围、精度等的约束条件件v元组:对元组中各个属性列间的联络的约束元组:对元组中各个属性列间的联络的约束v关系:对假设干元组间、关系集合上以及关系之关系:对假设干元组间、关系集合上以及关系之间的联络的约束间的联络的约束v两种形状两种形状v静态静态: 对静态对象的约束是反映数据库形状合理对静态对象的约束是反映数据库形状合理性的约束性的约束v动态动态: 对动态对象的约束是反映数据库形状变化对动态对象的约束是反映数据库形状变化的约束,新旧值之间满足的约束的约束,新旧值之间满足的约束完好性约束条件

4、分类完好性约束条件分类静态列级约束静态列级约束v对列的取值域的阐明对列的取值域的阐明v最常见、最简单、最容易实现的一类完好性约束最常见、最简单、最容易实现的一类完好性约束v五类静态列级约束五类静态列级约束v1) 数据类型约束:数据的类型、长度、单位、精数据类型约束:数据的类型、长度、单位、精度等度等v2) 对数据格式的约束:如日期为对数据格式的约束:如日期为YY.MM.DDv3) 取值范围或取值集合的约束取值范围或取值集合的约束v4) 对空值的约束:未定义或未知的值,与零值和对空值的约束:未定义或未知的值,与零值和空格不同空格不同v5) 其他约束:如关于列的排序阐明,组合列等其他约束:如关于列

5、的排序阐明,组合列等 静态元组约束静态元组约束v规定元组的各个列之间的约束关系规定元组的各个列之间的约束关系v例:订货关系中发货量例:订货关系中发货量=700元元v静态元组约束只局限在元组上静态元组约束只局限在元组上 静态关系约束静态关系约束v关系的各个元组之间或假设干关系之间存在的各关系的各个元组之间或假设干关系之间存在的各种联络或约束种联络或约束v常见静态关系约束:常见静态关系约束:v实体完好性约束实体完好性约束v参照完好性约束参照完好性约束v函数依赖约束:关系字段间存在的函数依赖函数依赖约束:关系字段间存在的函数依赖v统计约束:定义某个字段值一个关系多个元组的统计约束:定义某个字段值一个

6、关系多个元组的统计值之间的约束关系统计值之间的约束关系动态列级约束动态列级约束v动态列级约束是修正列定义或列值时应满动态列级约束是修正列定义或列值时应满足的约束条件足的约束条件v1) 修正列定义时的约束修正列定义时的约束v例:将原来允许空值的列改为不允许空例:将原来允许空值的列改为不允许空值时值时:v 该列目前已存在空值,那么回绝这种该列目前已存在空值,那么回绝这种修正修正v2) 修正列值时的约束修正列值时的约束v修正列值时新旧值之间要满足的约束条件修正列值时新旧值之间要满足的约束条件v 例:职工工资调整例:职工工资调整 = 原来工资原来工资v 年龄只能增长年龄只能增长动态元组、关系约束动态元

7、组、关系约束v动态元组约束动态元组约束v修正元组值修正元组值: 各个字段之间要满足的约各个字段之间要满足的约束条件束条件v例例: 职工工资调整不得低于其原来工职工工资调整不得低于其原来工资资 + 工龄工龄*1.5v动态关系约束动态关系约束v关系变化前后形状:限制条件关系变化前后形状:限制条件v例:事务一致性、原子性等约束条件例:事务一致性、原子性等约束条件完好性约束条件小结完好性约束条件小结 粒粒 度度状态状态列列 级级 元元 组组 级级 关关 系系 级级 静静 态态 列定义列定义类型类型格式格式值域值域 空值空值 元组值应满足的元组值应满足的条件条件 实体完整性约束实体完整性约束 参照完整性

8、约束参照完整性约束 函数依赖约束函数依赖约束 统计约束统计约束 动动 态态 改变列定改变列定义或列值义或列值 元组新旧值之间应元组新旧值之间应满足的约束条件满足的约束条件 关系新旧状态间应关系新旧状态间应满足的约束条件满足的约束条件 10.2 完好性控制完好性控制v定义功能定义功能v一个完善的完好性控制机制应该允许用户一个完善的完好性控制机制应该允许用户定义各类完好性约束条件定义各类完好性约束条件v检查功能检查功能v立刻执行的约束:语句执行完后立刻检查立刻执行的约束:语句执行完后立刻检查能否违背完好性约束能否违背完好性约束v 延迟执行的约束:完好性检查延迟到整个延迟执行的约束:完好性检查延迟到

9、整个事务执行终了后进展事务执行终了后进展v违约反响违约反响v 回绝该操作回绝该操作v 其他处置方法其他处置方法例子例子例:银行数据库中例:银行数据库中“借贷总金额应平衡的约束借贷总金额应平衡的约束 就应该是延迟执行的约束就应该是延迟执行的约束从账号从账号A转一笔钱到账号转一笔钱到账号B为一个事务,从账号为一个事务,从账号A转转出去钱后账就不平了,必需等转入账号出去钱后账就不平了,必需等转入账号B后账才后账才干重新平衡,这时才干进展完好性检查。干重新平衡,这时才干进展完好性检查。完好性规那么五元组表示完好性规那么五元组表示(D,O,A,C,P)DData:约束作用的数据对象:约束作用的数据对象O

10、Operation:触发完好性检查的数据:触发完好性检查的数据库操作库操作 当用户发出什么操作恳求时需求检查该当用户发出什么操作恳求时需求检查该完好性规那么是立刻检查还是延迟检查;完好性规那么是立刻检查还是延迟检查;AAssertion:数据对象必需满足的断:数据对象必需满足的断言或语义约束,这是规那么的主体;言或语义约束,这是规那么的主体; CCondition:选择:选择A作用的数据对象作用的数据对象值的谓词值的谓词 PProcedure:违反完好性规那么时:违反完好性规那么时触发的过程触发的过程例子例子实例实例学号不能为空学号不能为空教授工资不得低于教授工资不得低于1000元元数据对象数

11、据对象D约束作用的对象为约束作用的对象为Sno属性属性约束作用的对象为工资约束作用的对象为工资Sal属性属性操作操作O插入或修改插入或修改Student 元元组时组时插入或修改职工元组时插入或修改职工元组时断言断言ASno不能为空不能为空Sal不能小于不能小于1000谓词谓词C无(无(A可作用于所有记可作用于所有记录的录的Sno属性)属性)职称职称=教授教授 (A仅作用于仅作用于职称职称=教授教授的记录的记录)过程过程P拒绝执行该操作拒绝执行该操作拒绝执行该操作拒绝执行该操作关系系统三类完好性的实现关系系统三类完好性的实现v关系数据库系统都提供了定义和检查实体完好关系数据库系统都提供了定义和检

12、查实体完好性、参照完好性和用户定义的完好性的功能性、参照完好性和用户定义的完好性的功能v违反实体完好性规那么和用户定义的完好性规违反实体完好性规那么和用户定义的完好性规那么的操作:那么的操作:v普通是回绝执行普通是回绝执行v违反参照完好性的操作:违反参照完好性的操作:v回绝执行回绝执行v接受这个操作,同时执行一些附加的操作,以接受这个操作,同时执行一些附加的操作,以保证数据库的形状正确保证数据库的形状正确参照完好性的实现参照完好性的实现vRDBMS实现参照完好性时需求思索实现参照完好性时需求思索v外码能否可以接受空值的问题外码能否可以接受空值的问题v在被参照关系中删除元组时的问题在被参照关系中

13、删除元组时的问题v在参照关系中插入元组时的问题在参照关系中插入元组时的问题v修正关系中主码的问题修正关系中主码的问题1. 外码能否可以接受空值的问题外码能否可以接受空值的问题例例1:在职工部门数据库中,:在职工部门数据库中,EMP关系包含有外码关系包含有外码Deptno某元组的这一列假设为空值,表示这个职工尚未分配到任何某元组的这一列假设为空值,表示这个职工尚未分配到任何详细的部门任务,和运用环境的语义是相符详细的部门任务,和运用环境的语义是相符例例2:学生选课数据库,:学生选课数据库,Student关系为被参照关系,其主关系为被参照关系,其主码为码为Sno。 SC为参照关系,外码为为参照关系

14、,外码为Sno假设假设SC的的Sno为空值:阐明尚不存在的某个学生,或者某个为空值:阐明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成果记录在不知学号的学生,选修了某门课程,其成果记录在Grade中,与学校的运用环境是不相符的,因此中,与学校的运用环境是不相符的,因此SC的的Sno列不能列不能取空值。取空值。2.在被参照关系中删除元组时的问题在被参照关系中删除元组时的问题v出现违约操作的情形:出现违约操作的情形:v删除被参照关系的某个元组删除被参照关系的某个元组student,而参照,而参照关系有假设干元组关系有假设干元组(SC)的外码值与被删除的被参的外码值与被删除的被参照

15、关系的主码值一样照关系的主码值一样v违约反响:可有三种战略违约反响:可有三种战略v级联删除级联删除CASCADESv受限删除受限删除RESTRICTEDv置空值删除置空值删除NULLIFIESv这三种处置方法,哪一种是正确的,要依运用这三种处置方法,哪一种是正确的,要依运用环境的语义来定环境的语义来定三种战略三种战略v级联删除级联删除v将参照关系中外码值与被参照关系中要删除元组主码值相将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一同删除对应的元组一同删除v受限删除受限删除v当参照关系中没有任何元组的外码值与要删除的被参照关当参照关系中没有任何元组的外码值与要删除的被参照关系的元

16、组的主码值相对应时,系统才执行删除操作,否那系的元组的主码值相对应时,系统才执行删除操作,否那么回绝此删除操作么回绝此删除操作v置空值删除置空值删除v删除被参照关系的元组,并将参照关系中与被参照关系中删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值被删除元组主码值相等的外码值置为空值例子例子例:要删除例:要删除Student关系中关系中Sno=950001的元组,而的元组,而SC关系中关系中有有4个元组的个元组的Sno都等于都等于950001。级联删除:将级联删除:将SC关系中一切关系中一切4个个Sno=950001的元组一同删除。的元组一同删除。假设参照

17、关系同时又是另一个关系的被参照关系,那么这假设参照关系同时又是另一个关系的被参照关系,那么这种删除操作会继续级联下去种删除操作会继续级联下去 受限删除:系统将回绝执行此删除操作受限删除:系统将回绝执行此删除操作置空值删除:将置空值删除:将SC关系中一切关系中一切Sno=950001的元组的的元组的Sno值置值置为空值。为空值。在学生选课数据库中,显然第一种方法和第二种方法都是对在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合运用环境语义的。第三种方法不符合运用环境语义3.在参照关系中插入元组时的问题在参照关系中插入元组时的问题v出现违约操作的情形出现违约操作的情形v需求

18、在参照关系中插入元组,而被参照关系不存需求在参照关系中插入元组,而被参照关系不存在相应的元组在相应的元组v违约反响违约反响v受限插入:仅当被参照关系中存在相应的元组,受限插入:仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值一样时,其主码值与参照关系插入元组的外码值一样时,系统才执行插入操作,否那么回绝此操作系统才执行插入操作,否那么回绝此操作v递归插入:首先向被参照关系中插入相应的元组,递归插入:首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组向参照关系插入元组例子例子例:向例:向SC关

19、系插入关系插入99001,1,90元组,元组,而而Student关系中尚没有关系中尚没有Sno=99001的学生的学生受限插入:系统将回绝向受限插入:系统将回绝向SC关系插入关系插入99001,1,90元组元组递归插入:系统将首先向递归插入:系统将首先向Student关系插入关系插入Sno=99001的元组,然后向的元组,然后向SC关系插入关系插入99001,1,90元组元组4. 修正被参照关系中主码的问题修正被参照关系中主码的问题v两种战略两种战略v不允许修正主码不允许修正主码v允许修正主码允许修正主码 v违约操作违约操作v要修正被参照关系中某些元组的主码值,而参照要修正被参照关系中某些元组

20、的主码值,而参照关系中有些元组的外码值正好等于被参照关系要关系中有些元组的外码值正好等于被参照关系要修正的主码值,如修正修正的主码值,如修正student学号学号v要修正参照关系中某些元组的主码值,而被参照要修正参照关系中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参照关系修关系中没有任何元组的外码值等于被参照关系修正后的主码值,如修正正后的主码值,如修正SC中的学号中的学号允许修正主码战略允许修正主码战略v违约反响违约反响 1修正的关系是被参照关系:与删除修正的关系是被参照关系:与删除类似类似v级联修正级联修正v修正被参照关系中主码值同时,用一样的方法修修正被参照关系中主码值同

21、时,用一样的方法修正参照关系中相应的外码值正参照关系中相应的外码值v受限修正受限修正v回绝此修正操作。只当参照关系中没有任何元组回绝此修正操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才干被修正这个元组的主码值才干被修正v置空值修正置空值修正v修正被参照关系中主码值,同时将参照关系中相修正被参照关系中主码值,同时将参照关系中相应的外码值置为空值应的外码值置为空值例子例子 例:将例:将Student关系中关系中Sno=950001的元组中的元组中Sno值改值改为为960123。而。而SC关系中有关系中有 4

22、个元组的个元组的Sno=950001级联修正:将级联修正:将SC关系中关系中4个个Sno=950001元组中的元组中的Sno值也改为值也改为960123。假设参照关系同时又是另一个。假设参照关系同时又是另一个关系的被参照关系,那么这种修正操作会继续级关系的被参照关系,那么这种修正操作会继续级联下去。联下去。受限修正:只需受限修正:只需SC中没有任何元组的中没有任何元组的Sno=950001时,时,才干修正才干修正Student表中表中Sno=950001的元组的的元组的Sno值值改为改为960123。置空值修正:将置空值修正:将Student表中表中Sno=950001的元组的的元组的Sno值改为值改为960123。而将。而将S表中一切表中一切Sno=950001的的元组的元组的Sno值置为空值。值置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论