数据库完整性PPT课件.ppt

上传人:夺命阿水 文档编号:104768 上传时间:2025-07-10 格式:PPT 页数:30 大小:316.81KB
下载 相关 举报
数据库完整性PPT课件.ppt_第1页
第1页 / 共30页
数据库完整性PPT课件.ppt_第2页
第2页 / 共30页
数据库完整性PPT课件.ppt_第3页
第3页 / 共30页
数据库完整性PPT课件.ppt_第4页
第4页 / 共30页
数据库完整性PPT课件.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

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

2、束数据库中完整性约束条件:数据模型的组成部分约束数据库中数据的语义数据的语义nDBMS应提供定义数据库完整性约束条件,并把它们应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中作为模式的一部分存入数据库中2.完整性检查机制完整性检查机制n检查用户发出的操作请求是否违背了完整性约束条件检查用户发出的操作请求是否违背了完整性约束条件3.违约反应违约反应n如果发现用户的操作请求使数据违背了完整性约束条如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性件,则采取一定的动作来保证数据的完整性10.1完整性约束条件完整性约束条件v完整性约束条件作用的对象

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

4、六类六类六类对象状态对象状态对象状态对象状态 动态列级动态列级动态列级动态列级动态元组动态元组动态元组动态元组动态关系动态关系动态关系动态关系动态动态动态动态 静态列级静态列级静态列级静态列级静态元组静态元组静态元组静态元组静态关系静态关系静态关系静态关系静态静态静态静态 列列列列元组元组元组元组关系关系关系关系对象粒度对象粒度对象粒度对象粒度静态列级约束静态列级约束v对列的取值域的说明对列的取值域的说明v最常见、最简单、最容易实现的一类完整性约束最常见、最简单、最容易实现的一类完整性约束v五类静态列级约束五类静态列级约束1)数据类型约束数据类型约束:数据的类型、长度、单位、精度等:数据的类型

5、长度、单位、精度等2)对数据格式的约束:如对数据格式的约束:如日期为日期为YY.MM.DD3)取值范围或取值集合的约束取值范围或取值集合的约束4)对空值的约束:对空值的约束:未定义或未知的值,与零值和空格不未定义或未知的值,与零值和空格不同同5)其他约束:其他约束:如关于列的排序说明,组合列等如关于列的排序说明,组合列等静态元组约束静态元组约束v规定元组的各个列之间的约束关系规定元组的各个列之间的约束关系例:订货关系中发货量例:订货关系中发货量=700元元v静态元组约束只局限在元组上静态元组约束只局限在元组上静态关系约束静态关系约束v关系的各个元组之间或若干关系之间存在的各种关系的各个元组之

6、间或若干关系之间存在的各种联系或约束联系或约束v常见静态关系约束:常见静态关系约束:n实体完整性约束实体完整性约束n参照完整性约束参照完整性约束n函数依赖约束:关系字段间存在的函数依赖函数依赖约束:关系字段间存在的函数依赖n统计约束:定义某个字段值一个关系多个元统计约束:定义某个字段值一个关系多个元组的统计值之间的约束关系组的统计值之间的约束关系动态列级约束动态列级约束v动态列级约束是修改列定义或列值时应满动态列级约束是修改列定义或列值时应满足的约束条件足的约束条件1)修改列修改列定义定义时的约束时的约束例:将原来允许空值的列改为不允许空值时例:将原来允许空值的列改为不允许空值时:该列目前已存

7、在空值,则拒绝这种修改该列目前已存在空值,则拒绝这种修改2)修改列值时的约束修改列值时的约束修改列值时新旧值之间要满足的约束条件修改列值时新旧值之间要满足的约束条件例:职工工资调整例:职工工资调整=原来工资原来工资年龄只能增长年龄只能增长动态元组、关系约束动态元组、关系约束v动态元组约束动态元组约束n修改元组修改元组值值:各个字段之间要满足的约束条件各个字段之间要满足的约束条件例例:职工工资调整不得低于其原来工资职工工资调整不得低于其原来工资+工龄工龄*1.5v动态关系约束动态关系约束n关系变化前后状态:限制条件关系变化前后状态:限制条件例:事务一致性、原子性等约束条件例:事务一致性、原子性等

8、约束条件完整性约束条件小结完整性约束条件小结粒粒度度状态状态列列级级元元组组级级关关系系级级静静态态列定义列定义类型类型格式格式值域值域空值空值元元组组值值应应满满足足的的条件条件实体完整性约束实体完整性约束参照完整性约束参照完整性约束函数依赖约束函数依赖约束统计约束统计约束动动态态改变列定改变列定义或列值义或列值元组新旧值之间应元组新旧值之间应满足的约束条件满足的约束条件关系新旧状态间应关系新旧状态间应满足的约束条件满足的约束条件10.2完整性控制完整性控制v定义功能定义功能n一个完善的完整性控制机制应该允许用户定义各类完一个完善的完整性控制机制应该允许用户定义各类完整性约束条件整性约束条件

9、v检查功能检查功能n立即执行的约束立即执行的约束:语句执行完后立即检查是否违背完语句执行完后立即检查是否违背完整性约束整性约束n延迟执行的约束延迟执行的约束:完整性检查延迟到整个事务执行结完整性检查延迟到整个事务执行结束后进行束后进行v违约反应违约反应n拒绝该操作拒绝该操作n其他处理方法其他处理方法例子例子例:银行数据库中例:银行数据库中“借贷总金额应平衡借贷总金额应平衡”的约束的约束就应该是延迟执行的约束就应该是延迟执行的约束n从账号从账号A转一笔钱到账转一笔钱到账号号B为一个事务,从账为一个事务,从账号号A转出去钱后账就不平了,必须等转入账转出去钱后账就不平了,必须等转入账号号B后账才能重

10、新平衡,这时才能进行完整性检后账才能重新平衡,这时才能进行完整性检查。查。完整性规则五元组表示完整性规则五元组表示(D,O,A,C,P)vD(Data):):约束作用的约束作用的数据对象数据对象vO(Operation):):触发完整性检查的触发完整性检查的数据库操作数据库操作当用户发出什么操作请求时需要检查该完整性规则是立当用户发出什么操作请求时需要检查该完整性规则是立即检查还是延迟检查;即检查还是延迟检查;vA(Assertion):):数据对象必须满足的数据对象必须满足的断言断言或或语义语义约束,约束,这是规则的主体;这是规则的主体;vC(Condition):):选择选择A作用的数据对

11、象值的作用的数据对象值的谓词谓词vP(Procedure):):违反完整性规则时触发的违反完整性规则时触发的过程过程例子例子实例实例学号不能为空学号不能为空教授工资不得低于教授工资不得低于1000元元数据对象数据对象D约束作用的对象为约束作用的对象为Sno属性属性约束作用的对象为工资约束作用的对象为工资Sal属性属性操作操作O插入或修改插入或修改Student元元组时组时插入或修改职工元组时插入或修改职工元组时断言断言ASno不能为空不能为空Sal不能小于不能小于1000谓词谓词C无(无(A可作用于所有记可作用于所有记录的录的Sno属性)属性)职称职称=教授教授(A仅作用于仅作用于职称职称=教

12、授教授的记录的记录)过程过程P拒绝执行该操作拒绝执行该操作拒绝执行该操作拒绝执行该操作关系系统三类完整性的实现关系系统三类完整性的实现v关系数据库系统都提供了定义和检查关系数据库系统都提供了定义和检查实体完整实体完整性性、参照完整性参照完整性和用户定义的完整性的功能和用户定义的完整性的功能v违反实体完整性规则和用户定义的完整性规则违反实体完整性规则和用户定义的完整性规则的操作:的操作:n一般是拒绝执行一般是拒绝执行v违反参照完整性的操作:违反参照完整性的操作:n拒绝执行拒绝执行n接受这个操作,同时执行一些附加的操作,以保证接受这个操作,同时执行一些附加的操作,以保证数据库的状态正确数据库的状态

13、正确参照完整性的实现参照完整性的实现vRDBMS实现参照完整性时需要考虑实现参照完整性时需要考虑n外码是否可以接受空值的问题外码是否可以接受空值的问题n在被参照关系中删除元组时的问题在被参照关系中删除元组时的问题n在参照关系中插入元组时的问题在参照关系中插入元组时的问题n修改关系中主码的问题修改关系中主码的问题1.外码是否可以接受空值的问题外码是否可以接受空值的问题例例1:在职工部门数据库中,:在职工部门数据库中,EMP关系包含有外码关系包含有外码Deptnon某某元组的这一列若为空值,表示这个职工尚未分配到元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作,和任何具体的部门工作,

14、和应用环境的语义应用环境的语义是相符是相符例例2:学生选课数据库,:学生选课数据库,Student关系为被参照关系,其主关系为被参照关系,其主码为码为Sno。SC为参照关系,外码为为参照关系,外码为Snon若若SC的的Sno为空值:表明尚不存在的某个学生,或者为空值:表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录某个不知学号的学生,选修了某门课程,其成绩记录在在Grade中,与学校的应用环境是不相符的,因此中,与学校的应用环境是不相符的,因此SC的的Sno列不能取空值。列不能取空值。2.在被参照关系中删除元组时的问题在被参照关系中删除元组时的问题v出现违约操作的情形

15、出现违约操作的情形:n删除被参照关系的某个元组(删除被参照关系的某个元组(student),),而参照关系而参照关系有若干元组有若干元组(SC)的外码值与被删除的被参照关系的主的外码值与被删除的被参照关系的主码值相同码值相同v违约反应:可有三种策略违约反应:可有三种策略n级联删除(级联删除(CASCADES)n受限删除(受限删除(RESTRICTED)n置空值删除(置空值删除(NULLIFIES)这三种处理方法,哪一种是正确的,要依应用环这三种处理方法,哪一种是正确的,要依应用环境的语义来定境的语义来定三种策略三种策略v级联删除级联删除n将参照关系中外码值与被参照关系中要删除元组主码将参照关

16、系中外码值与被参照关系中要删除元组主码值相对应的元组一起删除值相对应的元组一起删除v受限删除受限删除n当参照关系中没有任何元组的外码值与要删除的被参当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作作,否则拒绝此删除操作v置空值删除置空值删除n删除被参照关系的元组,并将参照关系中与被参照关删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值系中被删除元组主码值相等的外码值置为空值例子例子例:要删除例:要删除Student关系中关系中Sno=950001

17、的元组,而的元组,而SC关系中关系中有有4个元组的个元组的Sno都等于都等于950001。n级联删除级联删除:将:将SC关系中所有关系中所有4个个Sno=950001的元组一的元组一起删除。如果参照关系同时又是另一个关系的被参照起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去关系,则这种删除操作会继续级联下去n受限删除受限删除:系统将拒绝执行此删除操作:系统将拒绝执行此删除操作n置空值删除置空值删除:将:将SC关系中所有关系中所有Sno=950001的元组的的元组的Sno值置为空值。值置为空值。v在学生选课数据库中,显然第一种方法和第二种方法都是在学生选课数据库

18、中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义对的。第三种方法不符合应用环境语义3.在参照关系中插入元组时的问题在参照关系中插入元组时的问题v出现违约操作的情形出现违约操作的情形n需要在参照关系中插入元组,而被参照关系需要在参照关系中插入元组,而被参照关系不存在相应的元组不存在相应的元组v违约反应违约反应n受限插入受限插入:仅当被参照关系中存在相应的元组,其仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作执行插入操作,否则拒绝此操作n递归插入递归插入:首先向被参照关系

19、中插入相应的元组,:首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组照关系插入元组例子例子例:向例:向SC关系插入(关系插入(99001,1,90)元组,)元组,而而Student关系中尚没有关系中尚没有Sno=99001的学生的学生n受限插入受限插入:系统将拒绝向:系统将拒绝向SC关系插入(关系插入(99001,1,90)元组)元组n递归插入递归插入:系统将首先向:系统将首先向Student关系插入关系插入Sno=99001的元组,然后向的元组,然后向SC关系插入关系插入(99001,1,90)元组)

20、元组4.修改被参照关系中主码的问题修改被参照关系中主码的问题v两种策略两种策略n不允许修改主码不允许修改主码n允许修改主码允许修改主码v违约操作违约操作要要修改被参照关系修改被参照关系中某些元组的主码值,而中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参参照关系中有些元组的外码值正好等于被参照关系要修改的主码值,照关系要修改的主码值,如修改如修改student学号学号要要修改参照关系修改参照关系中某些元组的主码值,而被中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参参照关系中没有任何元组的外码值等于被参照关系修改后的主码值,照关系修改后的主码值,如修改如修改SC中的学

21、号中的学号允许修改主码策略允许修改主码策略v违约反应违约反应1修改的关系是被参照关系:与删除修改的关系是被参照关系:与删除类似类似n级联修改级联修改n修改被参照关系中主码值同时,用相同的方法修改修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值参照关系中相应的外码值n受限修改受限修改n拒绝此修改操作。只当参照关系中没有任何元组的拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改个元组的主码值才能被修改n置空值修改置空值修改n修改被参照关系中主码值,同时将参照关系中相应修改被

22、参照关系中主码值,同时将参照关系中相应的外码值置为空值的外码值置为空值例子例子例:将例:将Student关系中关系中Sno=950001的元组中的元组中Sno值改值改为为960123。而。而SC关系中有关系中有4个元组的个元组的Sno=950001n级联修改级联修改:将:将SC关系中关系中4个个Sno=950001元组中的元组中的Sno值也改为值也改为960123。如果参照关系同时又是另一个关系。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。的被参照关系,则这种修改操作会继续级联下去。n受限修改受限修改:只有:只有SC中没有任何元组的中没有任何元组的Sno=9500

23、01时,时,才能修改才能修改Student表中表中Sno=950001的元组的的元组的Sno值改为值改为960123。n置空值修改置空值修改:将:将Student表中表中Sno=950001的元组的的元组的Sno值改为值改为960123。而将。而将S表中所有表中所有Sno=950001的元组的的元组的Sno值置为空值。值置为空值。v在学生选课数据库中只有第一种方法是正确的在学生选课数据库中只有第一种方法是正确的允许修改主码策略允许修改主码策略v违约反应违约反应(2)修改的关系是参照关修改的关系是参照关系:与插入类似系:与插入类似n受限插入受限插入n递归插入递归插入参照完整性的实现参照完整性的实

24、现vRDBMS在实现参照完整性时在实现参照完整性时n需要向用户提供定义主码、外码的机制需要向用户提供定义主码、外码的机制n向用户提供按照自己的应用要求选择处理依向用户提供按照自己的应用要求选择处理依赖关系中对应的元组的方法赖关系中对应的元组的方法10.4小结小结v数据库的完整性是为了保证数据库中存储数据库的完整性是为了保证数据库中存储的数据是正确的,所谓正确的是指符合现的数据是正确的,所谓正确的是指符合现实世界语义的实世界语义的vDBMS完整性实现的机制完整性实现的机制n完整性约束定义机制完整性约束定义机制n完整性检查机制完整性检查机制n违背完整性约束条件时违背完整性约束条件时DBMS应采取的应采取的动作动作小结小结v完整性机制的实施会极大地影响系统性能完整性机制的实施会极大地影响系统性能v不同的数据库产品对完整性的支持策略和支持不同的数据库产品对完整性的支持策略和支持程度是不同的程度是不同的n许多数据库管理系统对完整性机制的支持比许多数据库管理系统对完整性机制的支持比对安全性的支持要晚得多也弱得多对安全性的支持要晚得多也弱得多n数据库厂商对完整性的支持越来越好,不仅数据库厂商对完整性的支持越来越好,不仅在能保证实体完整性和参照完整性而且能在在能保证实体完整性和参照完整性而且能在DBMS核心定义、检查和保证用户定义的完核心定义、检查和保证用户定义的完整性约束条件整性约束条件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据库

宁ICP备18001539号-1