数据库系统课件.ppt
《数据库系统课件.ppt》由会员分享,可在线阅读,更多相关《数据库系统课件.ppt(78页珍藏版)》请在三一办公上搜索。
1、An Introduction to Database System,中国人民大学信息学院计算机系,数据库系统概论An Introduction to Database System第十章 数据库完整性,An Introduction to Database System,第十章 数据库完整性,什么是数据库的完整性数据的正确性和相容性防止不合语义的数据进入数据库。例:学生的年龄必须是整数,取值范围为14-29;学生的性别只能是男或女;学生的学号一定是唯一的;学生所在的系必须是学校开设的系;完整性:否真实地反映现实世界,An Introduction to Database System,完整性
2、控制机制,1.完整性约束条件定义机制2.完整性检查机制3.违约反应,An Introduction to Database System,完整性约束条件定义,完整性约束条件:数据模型的组成部分约束数据库中数据的语义DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中,An Introduction to Database System,完整性控制机制,检查用户发出的操作请求是否违背了完整性约束条件,An Introduction to Database System,违约反应,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。,An
3、Introduction to Database System,第十章 数据库完整性,10.1 完整性约束条件10.2 完整性控制10.3 Oracle的完整性10.4 小结,An Introduction to Database System,完整性约束条件(续),完整性约束条件作用的对象列:对属性的取值类型、范围、精度等的约束条件元组:对元组中各个属性列间的联系的约束关系:对若干元组间、关系集合上以及关系之间的联系的约束,An Introduction to Database System,完整性约束条件(续),静态对静态对象的约束是反映数据库状态合理性的约束动态对动态对象的约束是反映数据
4、库状态变迁的约束,An Introduction to Database System,完整性约束条件分类,六类完整性约束条件 静态列级约束 静态元组约束 静态关系约束 动态列级约束 动态元组约束 动态关系约束,An Introduction to Database System,完整性约束条件(续),对象状态 动态列级约束 动态元组约束 动态关系约束 动态 静态列级约束 静态元组约束 静态关系约束 静态 列 元组 关系 对象粒度,An Introduction to Database System,完整性约束条件(续),1.静态列级约束静态列级约束:对的取值域的说明最常见、最简单、最容易实现
5、的一类完整性约束,An Introduction to Database System,完整性约束条件(续),五类静态列级约束1)数据类型约束:数据的类型、长度、单位、精度等 例:学生姓名的数据类型为字符型,长度为82)对数据格式的约束例:学号:前两位表示入学年份,后四位为顺序编号 日期:YY.MM.DD。,An Introduction to Database System,完整性约束条件(续),3)取值范围或取值集合的约束例:规定成绩的取值范围为0-100 年龄的取值范围为14-29 性别的取值集合为男,女4)对空值的约束 空值:未定义或未知的值 空值:与零值和空格不同 有的列允许空值,有
6、的则不允许,如成绩可为空值5)其他约束例:关于列的排序说明,组合列等,An Introduction to Database System,完整性约束条件(续),2.静态元组约束 规定元组的各个列之间的约束关系例:订货关系中发货量=700元 静态元组约束只局限在元组上,An Introduction to Database System,完整性约束条件(续),3.静态关系约束 关系的各个元组之间或若干关系之间存在的各种联系或约束 常见静态关系约束:1)实体完整性约束2)参照完整性约束3)函数依赖约束4)统计约束,An Introduction to Database System,函数依赖约束
7、,关系字段间存在的函数依赖例:在学生课程教师关系 SJT(S,J,T)的函数依赖:(S,J)T,TJ)主码:(S,J),An Introduction to Database System,统计约束,定义某个字段值一个关系多个元组的统计值之间的约束关系例:职工平均工资的2倍=部门经理的工资=职工平均工资的5倍 职工平均工资值:统计值,An Introduction to Database System,完整性约束条件(续),4.动态列级约束 动态列级约束是修改列定义或列值时应满足的约束条件,An Introduction to Database System,完整性约束条件(续),1)修改列定
8、义时的约束例:将原来允许空值的列改为不允许空值时:该列目前已存在空值,则拒绝这种修改 2)修改列值时的约束修改列值时新旧值之间要满足的约束条件 例:职工工资调整=原来工资 年龄只能增长,An Introduction to Database System,完整性约束条件(续),5.动态元组约束 修改元组值:各个字段之间要满足的约束条件例:职工工资调整不得低于其原来工资+工龄*1.5,An Introduction to Database System,完整性约束条件(续),6.动态关系约束 关系变化前后状态:限制条件例:事务一致性、原子性等约束条件,An Introduction to Dat
9、abase System,完整性约束条件小结,An Introduction to Database System,第十章 数据库完整性,10.1 完整性约束条件10.2 完整性控制10.3 Oracle的完整性10.4 小结,An Introduction to Database System,10.2 完整性控制,一、DBMS的完整性控制机制二、关系系统三类完整性的实现三、参照完整性的实现,An Introduction to Database System,一、DBMS的完整性控制机制,1.定义功能一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。,An Introductio
10、n to Database System,DBMS的完整性控制机制(续),2.检查功能立即执行的约束(Immediate constraints)语句执行完后立即检查是否违背完整性约束 延迟执行的约束(Deferred constrainsts)完整性检查延迟到整个事务执行结束后进行,An Introduction to Database System,DBMS的完整性控制机制(续),例:银行数据库中“借贷总金额应平衡”的约束 就应该是延迟执行的约束从账号A转一笔钱到账号B为一个事务,从账号A转出去钱后账就不平了,必须等转入账号B后账才能重新平衡,这时才能进行完整性检查。,An Introdu
11、ction to Database System,DBMS的完整性控制机制(续),3.违约反应 拒绝该操作 其他处理方法,An Introduction to Database System,DBMS的完整性控制机制(续),完整性规则五元组表示:(D,O,A,C,P)D(Data)约束作用的数据对象;O(Operation)触发完整性检查的数据库操作 当用户发出什么操作请求时需要检查该完整性规则 是立即检查还是延迟检查;A(Assertion)数据对象必须满足的断言或语义约束这是规则的主体;C(Condition)选择A作用的数据对象值的谓词;P(Procedure)违反完整性规则时触发的过程
12、。,An Introduction to Database System,DBMS的完整性控制机制(续),例1:在“学号不能为空”的约束中D 约束作用的对象为Sno属性O 插入或修改Student 元组时A Sno不能为空C 无(A可作用于所有记录的Sno属性)P 拒绝执行该操作,An Introduction to Database System,DBMS的完整性控制机制(续),例2:在“教授工资不得低于1000元”的约束中D 约束作用的对象为工资Sal属性O 插入或修改职工元组时A Sal不能小于1000C 职称=教授(A仅作用于职称=教授的记录)P 拒绝执行该操作,An Introduc
13、tion to Database System,二、关系系统三类完整性的实现,关系数据库系统都提供了定义和检查实体完整性、参照完整性和用户定义的完整性的功能违反实体完整性规则和用户定义的完整性规则的操作:一般是拒绝执行违反参照完整性的操作:拒绝执行接受这个操作,同时执行一些附加的操作,以保证数据库的状态正确,An Introduction to Database System,三、参照完整性的实现,例:职工部门数据库包含职工表EMP和部门表DEPT1 DEPT关系的主码为部门号Deptno2 EMP关系的主码为职工号Empno,外码为部门号Deptno 称DEPT为被参照关系或目标关系,EMP
14、为参照关系RDBMS实现参照完整性时需要考虑以下4方面:,An Introduction to Database System,1.外码是否可以接受空值的问题,外码是否能够取空值:依赖于应用环境的语义实现参照完整性:系统提供定义外码的机制 定义外码列是否允许空值的机制,An Introduction to Database System,1.外码是否可以接受空值的问题,例1:在职工部门数据库中,EMP关系包含有外码Deptno 某元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作 和应用环境的语义是相符,An Introduction to Database System,1.外码
15、是否可以接受空值的问题,例2:学生选课数据库 Student关系为被参照关系,其主码为Sno。SC为参照关系,外码为Sno。若SC的Sno为空值:表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在Grade中 与学校的应用环境是不相符的,因此SC的Sno列不能取空值。,An Introduction to Database System,2.在被参照关系中删除元组时的问题,出现违约操作的情形:删除被参照关系的某个元组(student)而参照关系有若干元组(SC)的外码值与被删除的被参照关系的主码值相同,An Introduction to Database Syste
16、m,2.在被参照关系中删除元组时的问题,违约反应:可有三种策略级联删除(CASCADES)受限删除(RESTRICTED)置空值删除(NULLIFIES)这三种处理方法,哪一种是正确的,要依应用环境的语义来定,An Introduction to Database System,2.在被参照关系中删除元组时的问题,级联删除将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一起删除受限删除当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作,An Introduction to Database System,2.在被参照关
17、系中删除元组时的问题,置空值删除删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值。,An Introduction to Database System,2.在被参照关系中删除元组时的问题,例:要删除Student关系中Sno=950001的元组,而SC关系中有4个元组的Sno都等于950001。级联删除:将SC关系中所有4个Sno=950001的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去 受限删除:系统将拒绝执行此删除操作。,An Introduction to Database System,2.在被参照关系
18、中删除元组时的问题,置空值删除:将SC关系中所有Sno=950001的元组的Sno值置为空值。在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。,An Introduction to Database System,3.在参照关系中插入元组时的问题,出现违约操作的情形需要在参照关系中插入元组,而被参照关系不存在相应的元组违约反应受限插入递归插入,An Introduction to Database System,3.在参照关系中插入元组时的问题,受限插入仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 课件
链接地址:https://www.31ppt.com/p-2157270.html