1 / 24
文档名称:

数据库完整性.ppt

格式:ppt   大小:128KB   页数:24页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库完整性.ppt

上传人:guoxiachuanyue004 2017/7/18 文件大小:128 KB

下载得到文件列表

数据库完整性.ppt

相关文档

文档介绍

文档介绍:第五章数据库完整性
实体的完整性
参照完整性
用户定义的完整性
完整性约束命名子句
* 约中的完整性限制
触发器
小结
数据的正确性和相容性
防止不合语义的数据进入数据库。
例: 学生的年龄必须是整数,取值范围为14--29;
学生的性别只能是男或女;
学生的学号一定是唯一的;
学生所在的系必须是学校开设的系;
完整性:真实地反映现实世界
一、什么是数据库的完整性
二、DBMS的完整性控制机制
1. 定义功能
一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。
例:银行数据库中“借贷总金额应平衡”的约束就应该是延迟执行的约束
3. 违约反应
检查用户发出的操作请求是否违背了完整性约束条件
如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
立即执行的约束(Immediate constraints)
语句执行完后立即检查是否违背完整性约束
延迟执行的约束(Deferred constrainsts)
完整性检查延迟到整个事务执行结束后进行
2. 检查功能
拒绝该操作
其他处理方法
实体完整性
一、实体完整性定义
实体完整性规则:关系中的码不能为空也不能重复。
定义方法:在CREATE TABLE中用PRIMARY KEY。
二、实体完整性检查和违约处理
检查:插入操作或更改码的值时。
处理:拒绝执行
参照完整性
一、参照完整性定义
参照完整性规则:关系中的外码或者取空值,或者等于被参照关系中某个元组的主码值。
定义方法:在CREATE TABLE中用FOREIGN KEY。
二、参照完整性检查和违约处理
检查:对参照表和被参照表进行增、删、改操作时,有可能破坏参照完整性,必须进行检查。
处理:
被参照表
参照表
违约处理
可能被破坏完整性参照
插入元组
拒绝
可能被破坏完整性参照
修改主码值
拒绝
删除元组
可能被破坏完整性参照
拒绝/级连删除/设置为空
修改主码值
可能被破坏完整性参照
拒绝/级连删除/设置为空
可能破坏参照完整性的情况及违约处理
1. 在被参照关系中删除元组时的问题
例:要删除Student关系中Sno=200215122的元组,
而SC关系中有4个元组的Sno都等于200215122 。
级联删除:将SC关系中所有4个Sno= 200215122的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去
受限删除:系统将拒绝执行此删除操作。
置空值删除:将SC关系中所有Sno= 200215122的元组的Sno值置为空值。
在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。
2. 在参照关系中插入元组时的问题
出现违约操作的情形
需要在参照关系中插入元组,而被参照关系不存在相应的元组。
违约反应
受限插入
递归插入
仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。
首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。
例:向SC关系插入( 200215125 ,1,90)元组,而Student关系中尚没有Sno= 200215125的学生
受限插入:
系统将拒绝向SC关系插入( 200215125 ,1,90)元组。
递归插入:
系统将首先向Student关系插入Sno= 200215125的元组,然后向SC关系插入( 200215125 ,1,90)元组。
3. 修改被参照关系中主码的问题
两种策略
(1) 允许修改主码
(2) 不允许修改主码
(1)允许修改主码策略
违约操作
要修改被参照关系中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的主码值。
要修改参照关系中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参照关系修改后的主码值。
违约反应(1):修改的关系是被参照关系:与删除类似
级连修改
受限修改
置空值修改
修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。
拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。
修改被参照关系中主码值,同时将参照关系中相应的外码值置为空值。
违约反应(2) : 修改的关系是参照关系:与插入类似。
受限插入
递归插入
(1)允许修改主码策略
例:将Student关系中Sno= 200215123的元组中Sno值改为200215128。