数据库完整性课件综述

上传人:最**** 文档编号:118173823 上传时间:2019-12-11 格式:PPT 页数:77 大小:171KB
返回 下载 相关 举报
数据库完整性课件综述_第1页
第1页 / 共77页
数据库完整性课件综述_第2页
第2页 / 共77页
数据库完整性课件综述_第3页
第3页 / 共77页
数据库完整性课件综述_第4页
第4页 / 共77页
数据库完整性课件综述_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《数据库完整性课件综述》由会员分享,可在线阅读,更多相关《数据库完整性课件综述(77页珍藏版)》请在金锄头文库上搜索。

1、数据库系统概论 An Introduction to Database System 第十章 数据库完整性 第十章 数据库完整性 什么是数据库的完整性 数据的正确性和相容性 防止不合语义的数据进入数据库。 例: 学生的年龄必须是整数,取值范围为14- 29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系; 完整性:是否真实地反映现实世界 完整性控制机制 1.完整性约束条件定义机制 2.完整性检查机制 3.违约反应 完整性约束条件定义 w完整性约束条件:数据模型的组成部分约束 数据库中数据的语义 wDBMS应提供定义数据库完整性约束条件, 并把它们作为模式的

2、一部分存入数据库中 完整性控制机制 w检查用户发出的操作请求是否违背了完整性 约束条件 违约反应 w如果发现用户的操作请求使数据违背了完整 性约束条件,则采取一定的动作来保证数据 的完整性。 第十章 数据库完整性 10.1 完整性约束条件 10.2 完整性控制 10.3 Oracle的完整性 10.4 小结 完整性约束条件(续) 完整性约束条件作用的对象 w列:对属性的取值类型、范围、精度等的约束 条件 w元组:对元组中各个属性列间的联系的约束 w关系:对若干元组间、关系集合上以及关系之 间的联系的约束 完整性约束条件(续) w静态 对静态对象的约束是反映数据库状 态合理性的约束 w动态 对动

3、态对象的约束是反映数据库状 态变迁的约束 完整性约束条件分类 六类完整性约束条件 w 静态列级约束 w 静态元组约束 w 静态关系约束 w 动态列级约束 w 动态元组约束 w 动态关系约束 完整性约束条件(续) 对象状态 动态列级约束 动态元组约束 动态关系约束 动态 静态列级约束 静态元组约束 静态关系约束 静态 列 元组 关系 对象粒度 完整性约束条件(续) 1. 静态列级约束 w静态列级约束:对的取值域的说明 w最常见、最简单、最容易实现的一类完整性 约束 完整性约束条件(续) w五类静态列级约束 1) 数据类型约束:数据的类型、长度、单位 、精度等 例:学生姓名的数据类型为字符型,长度

4、 为8 2) 对数据格式的约束 例: 学号:前两位表示入学年份,后四位为顺 序编号 日期:YY.MM.DD。 完整性约束条件(续) 3) 取值范围或取值集合的约束 例:规定成绩的取值范围为0-100 年龄的取值范围为14-29 性别的取值集合为男,女 4) 对空值的约束 空值:未定义或未知的值 空值:与零值和空格不同 有的列允许空值,有的则不允许,如成绩可为空值 5) 其他约束 例:关于列的排序说明,组合列等 完整性约束条件(续) 2. 静态元组约束 规定元组的各个列之间的约束关系 例:订货关系中发货量=700元 静态元组约束只局限在元组上 完整性约束条件(续) 3. 静态关系约束 关系的各个

5、元组之间或若干关系之间存在的各种联 系或约束 常见静态关系约束: 1) 实体完整性约束 2) 参照完整性约束 3) 函数依赖约束 4) 统计约束 函数依赖约束 w关系字段间存在的函数依赖 例:在学生课程教师关系 SJT(S,J,T) 的函数依赖: ( (S,J)T, TJ ) 主码: (S, J) 统计约束 w定义某个字段值一个关系多个元组的统计值之间 的约束关系 w例:职工平均工资的2倍=部门经理的工资= 原来工资 年龄只能增长 完整性约束条件(续) 5. 动态元组约束 修改元组值: 各个字段之间要满足的约束条件 例: 职工工资调整不得低于其原来工资 + 工龄*1.5 完整性约束条件(续)

6、6. 动态关系约束 关系变化前后状态:限制条件 例:事务一致性、原子性等约束条件 完整性约束条件小结 粒度 状态 列 级 元 组 级 关 系 级 静 态 列定义 类型 格式 值域 空值 元组值应满 足 的条件 实体完整性约 束 参照完整性约束 函数依赖约 束 统计约 束 动 态 改变列定 义或列值 元组新旧值之间 应满 足的约束条 件 关系新旧状态间 应满 足的约束条 件 第十章 数据库完整性 10.1 完整性约束条件 10.2 完整性控制 10.3 Oracle的完整性 10.4 小结 10.2 完整性控制 一、DBMS的完整性控制机制 二、关系系统三类完整性的实现 三、参照完整性的实现 一

7、、DBMS的完整性控制机制 1. 定义功能 一个完善的完整性控制机制应该允许用户定 义各类完整性约束条件。 DBMS的完整性控制机制(续) 2. 检查功能 w立即执行的约束(Immediate constraints) 语句执行完后立即检查是否违背完整性 约束 w 延迟执行的约束(Deferred constrainsts) 完整性检查延迟到整个事务执行结束后 进行 DBMS的完整性控制机制(续) 例:银行数据库中“借贷总金额应平衡”的约束 就应该是延迟执行的约束 从账号A转一笔钱到账号B为一个事务,从账 号A转出去钱后账就不平了,必须等转入账号B后 账才能重新平衡,这时才能进行完整性检查。

8、DBMS的完整性控制机制(续) 3. 违约反应 拒绝该操作 其他处理方法 DBMS的完整性控制机制(续) 完整性规则五元组表示: (D,O,A,C,P) wD(Data) 约束作用的数据对象; wO(Operation) 触发完整性检查的数据库操作 当用户发出什么操作请求时需要检查该完整性规则 是立即检查还是延迟检查; wA(Assertion) 数据对象必须满足的断言或语义约束这 是规则的主体; w C(Condition) 选择A作用的数据对象值的谓词; w P(Procedure) 违反完整性规则时触发的过程。 DBMS的完整性控制机制(续) 例1:在“学号不能为空”的约束中 D 约束作

9、用的对象为Sno属性 O 插入或修改Student 元组时 A Sno不能为空 C 无(A可作用于所有记录的Sno属性) P 拒绝执行该操作 DBMS的完整性控制机制(续) 例2:在“教授工资不得低于1000元”的约束中 D 约束作用的对象为工资Sal属性 O 插入或修改职工元组时 A Sal不能小于1000 C 职称=教授 (A仅作用于职称=教授的记录) P 拒绝执行该操作 二、关系系统三类完整性的实现 w关系数据库系统都提供了定义和检查实体完整 性、参照完整性和用户定义的完整性的功能 w违反实体完整性规则和用户定义的完整性规则 的操作: 一般是拒绝执行 w违反参照完整性的操作: 拒绝执行

10、接受这个操作,同时执行一些附加的操作,以 保证数据库的状态正确 三、参照完整性的实现 例:职工部门数据库包含职工表EMP和部门表DEPT 1 DEPT关系的主码为部门号Deptno 2 EMP关系的主码为职工号Empno, 外码为部门号Deptno 称DEPT为被参照关系或目标关系,EMP为参照关系 RDBMS实现参照完整性时需要考虑以下4方面: 1. 外码是否可以接受空值的问题 w外码是否能够取空值:依赖于应用环境的 语义 w实现参照完整性: 系统提供定义外码的机制 定义外码列是否允许空值的机制 1. 外码是否可以接受空值的问题 例1:在职工部门数据库中, EMP关系包含有外码Deptno

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

12、除元组时的问题 w违约反应:可有三种策略 级联删除(CASCADES) 受限删除(RESTRICTED) 置空值删除(NULLIFIES) 这三种处理方法,哪一种是正确的,要依 应用环境的语义来定 2.在被参照关系中删除元组时的问题 w级联删除 将参照关系中外码值与被参照关系中要删除元 组主码值相对应的元组一起删除 w受限删除 当参照关系中没有任何元组的外码值与要删除 的被参照关系的元组的主码值相对应时,系统 才执行删除操作,否则拒绝此删除操作 2.在被参照关系中删除元组时的问题 w置空值删除 删除被参照关系的元组,并将参照关系 中与被参照关系中被删除元组主码值相 等的外码值置为空值。 2.在

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号