资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中国人民大学信息学院计算机系数据库系统概论 An Introduction to Database System第十章 数据库完整性An Introduction to Database System第十章 数据库完整性什么是数据库的完整性n数据的正确性和相容性n防止不合语义的数据进入数据库。例: 学生的年龄必须是整数,取值范围为14- 29;学生的性别只能是男或女;学生的学号一定是唯一的;学生所在的系必须是学校开设的系;n完整性:否真实地反映现实世界An Introduction to Database System完整性控制机制1.完整性约束条件定义机制2.完整性检查机制3.违约反应An Introduction to Database System完整性约束条件定义n完整性约束条件:数据模型的组成部分 约束数据库中数据的语义nDBMS应提供定义数据库完整性约束条件 ,并把它们作为模式的一部分存入数据 库中An Introduction to Database System完整性控制机制n检查用户发出的操作请求是否违背了完整性约束条件An Introduction to Database System违约反应n如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。An Introduction to Database System第十章 数据库完整性10.1 完整性约束条件10.2 完整性控制10.3 Oracle的完整性10.4 小结An Introduction to Database System完整性约束条件(续)完整性约束条件作用的对象n列:对属性的取值类型、范围、精度等的约束条件n元组:对元组中各个属性列间的联系的约束n关系:对若干元组间、关系集合上以及关系之间的联系的约束An Introduction to Database System完整性约束条件(续)n静态n对静态对象的约束是反映数据 库状态合理性的约束n动态n对动态对象的约束是反映数据 库状态变迁的约束An Introduction to Database System完整性约束条件分类六类完整性约束条件n 静态列级约束n 静态元组约束n 静态关系约束n 动态列级约束n 动态元组约束n 动态关系约束An Introduction to Database System完整性约束条件(续)对象状态 动态列级约束 动态元组约束 动态关系约束动态 静态列级约束 静态元组约束 静态关系约束静态 列 元组 关系 对象粒度An Introduction to Database System完整性约束条件(续)1. 静态列级约束n静态列级约束:对的取值域的说明n最常见、最简单、最容易实现的一类完整性约束An Introduction to Database System完整性约束条件(续)n五类静态列级约束1) 数据类型约束:数据的类型、长度、单位、 精度等例:学生姓名的数据类型为字符型,长度为 82) 对数据格式的约束例:学号:前两位表示入学年份,后四位为顺序 编号日期:YY.MM.DD。An Introduction to Database System完整性约束条件(续)3) 取值范围或取值集合的约束 例:规定成绩的取值范围为0-100年龄的取值范围为14-29性别的取值集合为男,女4) 对空值的约束空值:未定义或未知的值空值:与零值和空格不同有的列允许空值,有的则不允许,如成绩可 为空值5) 其他约束 例:关于列的排序说明,组合列等An Introduction to Database System完整性约束条件(续)2. 静态元组约束规定元组的各个列之间的约束关系 例:订货关系中发货量=700元静态元组约束只局限在元组上 An Introduction to Database System完整性约束条件(续)3. 静态关系约束关系的各个元组之间或若干关系之间存在的各 种联系或约束常见静态关系约束: 1) 实体完整性约束 2) 参照完整性约束 3) 函数依赖约束 4) 统计约束An Introduction to Database System函数依赖约束n关系字段间存在的函数依赖例:在学生课程教师关系SJT(S,J,T) 的函数依赖:( (S,J)T, TJ )主码: (S, J)An Introduction to Database System统计约束n定义某个字段值一个关系多个元组的统计值之间 的约束关系n例:职工平均工资的2倍= 原来工资年龄只能增长 An Introduction to Database System完整性约束条件(续)5. 动态元组约束修改元组值: 各个字段之间要满足的约束条件例: 职工工资调整不得低于其原来工资 + 工龄*1.5An Introduction to Database System完整性约束条件(续)6. 动态关系约束关系变化前后状态:限制条件例:事务一致性、原子性等约束条件An Introduction to Database System完整性约束条件小结粒 度 状态 列 级 元 组 级 关 系 级 静 态 列定义 类型 格式 值域空值 元组值应满 足 的条件实体完整性约束参照完整性约束函数依赖约 束统计约 束 动 态 改变列定 义或列值 元组新旧值之间 应满 足的约束条件 关系新旧状态间 应满 足的约束条 件 An Introduction to Database System第十章 数据库完整性10.1 完整性约束条件10.2 完整性控制10.3 Oracle的完整性10.4 小结An Introduction to Database System10.2 完整性控制一、DBMS的完整性控制机制二、关系系统三类完整性的实现三、参照完整性的实现An Introduction to Database System一、DBMS的完整性控制机制1. 定义功能一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。An Introduction to Database SystemDBMS的完整性控制机制(续)2. 检查功能n立即执行的约束(Immediate constraints)语句执行完后立即检查是否违背完 整性约束n 延迟执行的约束(Deferred constrainsts) 完整性检查延迟到整个事务执行结 束后 进行An Introduction to Database SystemDBMS的完整性控制机制(续)例:银行数据库中“借贷总金额应平衡”的约束就应该是延迟执行的约束n从账号A转一笔钱到账号B为一个事务, 从账号A转出去钱后账就不平了,必须等转 入账号B后账才能重新平衡,这时才能进行 完整性检查。An Introduction to Database SystemDBMS的完整性控制机制(续)3. 违约反应n 拒绝该操作n 其他处理方法An Introduction to Database SystemDBMS的完整性控制机制(续) 完整性规则五元组表示: (D,O,A,C,P)nD(Data) 约束作用的数据对象;nO(Operation) 触发完整性检查的数据库操作当用户发出什么操作请求时需要检查该完整性规则是立即检查还是延迟检查;nA(Assertion) 数据对象必须满足的断言或语义约束 这是规则的主体;n C(Condition) 选择A作用的数据对象值的谓词;n P(Procedure) 违反完整性规则时触发的过程。An Introduction to Database SystemDBMS的完整性控制机制(续)例1:在“学号不能为空”的约束中D 约束作用的对象为Sno属性O 插入或修改Student 元组时A Sno不能为空C 无(A可作用于所有记录的Sno属性)P 拒绝执行该操作An Introduction to Database SystemDBMS的完整性控制机制(续)例2:在“教授工资不得低于1000元”的约束中D 约束作用的对象为工资Sal属性O 插入或修改职工元组时A Sal不能小于1000C 职称=教授(A仅作用于职称=教授的记录)P 拒绝执行该操作An Introduction to Database System二、关系系统三类完整性的实现n关系数据库系统都提供了定义和检查实体完整 性、参照完整性和用户定义的完整性的功能n违反实体完整性规则和用户定义的完整性规则 的操作:一般是拒绝执行n违反参照完整性的操作:n拒绝执行n接受这个操作,同时执行一些附加的操作,以 保证数据库的状态正确An Introduction to Database System三、参照完整性的实现例:职工部门数据库包含职工表EMP和部门表DEPT 1 DEPT关系的主码为部门号Deptno 2 EMP关系的主码为职工号Empno, 外码为部门号Deptno称DEPT为被参照关系或目标关系,EMP为参照关系RDBMS实现参照完整性时需要考虑以下4方面:An Introduction to Database System1. 外码是否可以接受空值的问题n外码是否能够取空值:依赖于应用环境的 语义n实现参照完整性:系统提供定义外码的机制定义外码列是否允许空值的机制An Introduction to Database System1. 外码是否可以接受空值的问题例1:在职工部门数据库中,EMP关系包含有外码Deptno某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作和应用环境的语义是相符An Introduction to Database System1. 外码是否可以接受空值的问题例2:学生选课数据库Student关系为被参照关系,其主码为Sno。SC为参照关系,外码为Sno。若SC的Sno为空值:表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在Grade中与学校的应用环境是不相符的,因此SC的Sno列不能取空值。An Introduction to Database System2.在被参照关系中删除元组时的问题出现违约操作的情形:删除被参照关系的某个元组(student)而参照关系有若干元组(SC)的外码值与 被删除的被参照关系的主码值相同An Introduction to Database System2.在被参照关系中删除元组时的问题n违约反应:可有三种策略n级联删除(CASCADES)n受限删除(RESTRICTED)n置空值删除(NULLIFIES)这三种处理方法,哪一种是正确的, 要依应用环境的语义来定An Introduction to Database System2.在被参照关系中删除元组时的问题n级联删除将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一起删除n受限删除 当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作An Introduction to Database System2.在被参照关系中删除元组时的问题n置空值删除删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值。An Introduction to Database System2.在被参照关系中删除元组时的问题例:要删除Student关系中Sno=950001的元组,而SC关系中有4个元组的Sno都等于950001 。n级联删除:将SC关系中所有4个 Sno=950001的元组一起删除。如果参照关 系同时又是另一个关系的被参照关系,则这 种删除操作会继续级联下去 n受限删除:系统将拒绝执行此删除
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号