第十章数据库完整性.ppt

上传人:本田雅阁 文档编号:3131162 上传时间:2019-07-14 格式:PPT 页数:30 大小:121.53KB
返回 下载 相关 举报
第十章数据库完整性.ppt_第1页
第1页 / 共30页
第十章数据库完整性.ppt_第2页
第2页 / 共30页
第十章数据库完整性.ppt_第3页
第3页 / 共30页
第十章数据库完整性.ppt_第4页
第4页 / 共30页
第十章数据库完整性.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《第十章数据库完整性.ppt》由会员分享,可在线阅读,更多相关《第十章数据库完整性.ppt(30页珍藏版)》请在三一文库上搜索。

1、第十章 数据库完整性,概述,什么是数据库的完整性 数据的正确性和相容性 防止不合语义的数据进入数据库 例: 学生的年龄必须是整数,取值范围为14-29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系; 完整性:否真实地反映现实世界,完整性控制机制,1.完整性约束条件定义机制 完整性约束条件:数据模型的组成部分约束数据库中数据的语义 DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中 2.完整性检查机制 检查用户发出的操作请求是否违背了完整性约束条件 3.违约反应 如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来

2、保证数据的完整性,10.1 完整性约束条件,完整性约束条件作用的对象 列:对属性的取值类型、范围、精度等的约束条件 元组:对元组中各个属性列间的联系的约束 关系:对若干元组间、关系集合上以及关系之间的联系的约束 两种状态 静态: 对静态对象的约束是反映数据库状态合理性的约束 动态: 对动态对象的约束是反映数据库状态变迁的约束,新旧值之间满足的约束,完整性约束条件分类,六类 对象状态 动态列级 动态元组 动态关系 动态 静态列级 静态元组 静态关系 静态 列 元组 关系 对象粒度,静态列级约束,对列的取值域的说明 最常见、最简单、最容易实现的一类完整性约束 五类静态列级约束 1) 数据类型约束:

3、数据的类型、长度、单位、精度等 2) 对数据格式的约束:如日期为YY.MM.DD 3) 取值范围或取值集合的约束 4) 对空值的约束:未定义或未知的值,与零值和空格不同 5) 其他约束:如关于列的排序说明,组合列等,静态元组约束,规定元组的各个列之间的约束关系 例:订货关系中发货量=700元 静态元组约束只局限在元组上,静态关系约束,关系的各个元组之间或若干关系之间存在的各种联系或约束 常见静态关系约束: 实体完整性约束 参照完整性约束 函数依赖约束:关系字段间存在的函数依赖 统计约束:定义某个字段值一个关系多个元组的统计值之间的约束关系,动态列级约束,动态列级约束是修改列定义或列值时应满足的

4、约束条件 1) 修改列定义时的约束 例:将原来允许空值的列改为不允许空值时: 该列目前已存在空值,则拒绝这种修改 2) 修改列值时的约束 修改列值时新旧值之间要满足的约束条件 例:职工工资调整 = 原来工资 年龄只能增长,动态元组、关系约束,动态元组约束 修改元组值: 各个字段之间要满足的约束条件 例: 职工工资调整不得低于其原来工资 + 工龄*1.5 动态关系约束 关系变化前后状态:限制条件 例:事务一致性、原子性等约束条件,完整性约束条件小结,10.2 完整性控制,定义功能 一个完善的完整性控制机制应该允许用户定义各类完整性约束条件 检查功能 立即执行的约束:语句执行完后立即检查是否违背完

5、整性约束 延迟执行的约束:完整性检查延迟到整个事务执行结束后进行 违约反应 拒绝该操作 其他处理方法,例子,例:银行数据库中“借贷总金额应平衡”的约束 就应该是延迟执行的约束 从账号A转一笔钱到账号B为一个事务,从账号A转出去钱后账就不平了,必须等转入账号B后账才能重新平衡,这时才能进行完整性检查。,完整性规则五元组表示,(D,O,A,C,P) D(Data):约束作用的数据对象 O(Operation):触发完整性检查的数据库操作 当用户发出什么操作请求时需要检查该完整性规则是立即检查还是延迟检查; A(Assertion):数据对象必须满足的断言或语义约束,这是规则的主体; C(Condi

6、tion):选择A作用的数据对象值的谓词 P(Procedure):违反完整性规则时触发的过程,例子,关系系统三类完整性的实现,关系数据库系统都提供了定义和检查实体完整性、参照完整性和用户定义的完整性的功能 违反实体完整性规则和用户定义的完整性规则的操作: 一般是拒绝执行 违反参照完整性的操作: 拒绝执行 接受这个操作,同时执行一些附加的操作,以保证数据库的状态正确,参照完整性的实现,RDBMS实现参照完整性时需要考虑 外码是否可以接受空值的问题 在被参照关系中删除元组时的问题 在参照关系中插入元组时的问题 修改关系中主码的问题,1. 外码是否可以接受空值的问题,例1:在职工部门数据库中,EM

7、P关系包含有外码Deptno 某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作,和应用环境的语义是相符 例2:学生选课数据库,Student关系为被参照关系,其主码为Sno。 SC为参照关系,外码为Sno 若SC的Sno为空值:表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在Grade中,与学校的应用环境是不相符的,因此SC的Sno列不能取空值。,2.在被参照关系中删除元组时的问题,出现违约操作的情形: 删除被参照关系的某个元组(student),而参照关系有若干元组(SC)的外码值与被删除的被参照关系的主码值相同 违约反应:可有三种策略 级联删除(

8、CASCADES) 受限删除(RESTRICTED) 置空值删除(NULLIFIES) 这三种处理方法,哪一种是正确的,要依应用环境的语义来定,三种策略,级联删除 将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一起删除 受限删除 当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作 置空值删除 删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值,例子,例:要删除Student关系中Sno=950001的元组,而SC关系中有4个元组的Sno都等于950001。 级联删除:将SC关系中所

9、有4个Sno=950001的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去 受限删除:系统将拒绝执行此删除操作 置空值删除:将SC关系中所有Sno=950001的元组的Sno值置为空值。 在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义,3.在参照关系中插入元组时的问题,出现违约操作的情形 需要在参照关系中插入元组,而被参照关系不存在相应的元组 违约反应 受限插入:仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作 递归插入:首先向被参照关系中插入相应的元组,其

10、主码值等于参照关系插入元组的外码值,然后向参照关系插入元组,例子,例:向SC关系插入(99001,1,90)元组,而Student关系中尚没有Sno=99001的学生 受限插入:系统将拒绝向SC关系插入(99001,1,90)元组 递归插入:系统将首先向Student关系插入Sno=99001的元组,然后向SC关系插入(99001,1,90)元组,4. 修改被参照关系中主码的问题,两种策略 不允许修改主码 允许修改主码 违约操作 要修改被参照关系中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的主码值,如修改student学号 要修改参照关系中某些元组的主码值,而被参照

11、关系中没有任何元组的外码值等于被参照关系修改后的主码值,如修改SC中的学号,允许修改主码策略,违约反应 1修改的关系是被参照关系:与删除类似 级联修改 修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值 受限修改 拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改 置空值修改 修改被参照关系中主码值,同时将参照关系中相应的外码值置为空值,例子,例:将Student关系中Sno=950001的元组中Sno值改为960123。而SC关系中有 4个元组的Sno=950001 级联修改:将SC关系中4个Sno=950001元

12、组中的Sno值也改为960123。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。 受限修改:只有SC中没有任何元组的Sno=950001时,才能修改Student表中Sno=950001的元组的Sno值改为960123。 置空值修改:将Student表中Sno=950001的元组的Sno值改为960123。而将S表中所有Sno=950001的元组的Sno值置为空值。 在学生选课数据库中只有第一种方法是正确的,允许修改主码策略,违约反应 (2)修改的关系是参照关系:与插入类似 受限插入 递归插入,参照完整性的实现,RDBMS在实现参照完整性时 需要向用户提供定义主码、外码的机制 向用户提供按照自己的应用要求选择处理依赖关系中对应的元组的方法,10.4 小结,数据库的完整性是为了保证数据库中存储的数据是正确的,所谓正确的是指符合现实世界语义的 DBMS完整性实现的机制 完整性约束定义机制 完整性检查机制 违背完整性约束条件时DBMS应采取的动作,小结,完整性机制的实施会极大地影响系统性能 不同的数据库产品对完整性的支持策略和支持程度是不同的 许多数据库管理系统对完整性机制的支持比对安全性的支持要晚得多也弱得多 数据库厂商对完整性的支持越来越好,不仅在能保证实体完整性和参照完整性而且能在DBMS核心定义、检查和保证用户定义的完整性约束条件,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1