编辑: 施信荣 2016-03-20

第十章 完整性 数据库的完整性是指数据的正确性和相容性.

数据的完整性和安全性是两个不同的概念.10.1 完整性约束条件完整性检查是围绕完整性约束条件进行的,它是完整性控制机制的核心.完整性约束条件作用的对象是关系、元组、列三种.其中列约束主要是列的类型、取值范围、精度、排序等约束条件.元组的约束是元组中各字段的联系的约束.关系的约束是若干元组间、关系集合上以及关系之间的联系的约束.涉及的三类对象的状态可以是静态的,也可以是动态的. 六类完整性约束条件: 动态 静态 ① ② ③ ⑥ ⑤ ④ 静态列级约束 静态元组约束 静态关系约束 动态列级约束 动态元组约束 动态关系约束 对象状态 列 元组 关系 对象粒度 完整性约束条件分类

一、静态列级约束1. 对数据类型的约束2. 对数据格式的约束3. 兑取值范围或取值集合的约束4. 对空值的约束5. 其他约束

二、静态元组约束规定元组和各列之间的约束关系.

三、静态关系约束(1) 实体完整性约束(2) 参照完整性约束(3) 函数依赖约束(4) 统计约束

四、动态列级约束(1) 修改列定义时的约束(2) 修改列值时的约束

五、动态元组约束指修改元组的值时元组各字段键需要满足某种约束条件.

六、动态关系约束在关系变化前后状态上的限制条件. 完整性约束条件 列级列定义・类型・格式・值域・空值 元组级元组值应满足的条件 关系级实体完整性约束参照完整性约束函数依赖约束统计约束 静态 动态 改变列定义或列值 元组新旧值之间应满足的约束条件 关系新旧值之间应满足的约束条件 状态 粒度 10.2 完整性控制 DBMS的完整性控制机制应具有三方面的功能:定义功能,提供定义完整性约束条件的机制.检查功能,检查用户发出的操作请求是否违背了完整性约束条件.如果发现用户的操作请求时数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性.一条完整性规则用一个五元组(D,O,A,C,P)表示:D(Data)-约束作用的数据对象;

O(Operation)-触发完整性检查的数据库操作;

A(Assertion)-数据对象必须满足的断言或语义约束;

C(Condition) C选择A作用的数据对象值的谓词;

P(Procedure) C违反完整性规则时触发的过程. 例如,在"学号不能为空"的约束中:D 约束作用的对象为Sno属性O 插入或修改Student元组时A Sno不能为空C 无(A可作用于所有记录的Sno属性)P 拒绝执行该操作在关系系统中,最重要的完整性约束是实体完整性和参照完整性,其他的完整性约束条件则可以归入用户定义的完整性.对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理.而对于违反参照完整性的操作,并不都是简单地拒绝执行,又是根据应用语义执行一些附加操作,以保证数据可正确性. 实现参照完整性要考虑的几个问题:1. 外码能否接受空值问题2. 在被参照关系中删除元组的问题(1) 级联删除(CASCADES)(2) 受限删除(RESTRICTED)(3) 置空值删除(NULLIFIES)3. 在参照关系中插入元组时的问题(1) 受限插入(2) 递归插入4. 修改关系中主码的问题(1) 不允许修改主码(2) 允许修改主码 10.3 Oracle的完整性

一、Oracle中的实体完整性若要定义Student表的Sno为主码:CREATE TABLE Student(Sno NUMBER(8), Sname VARCHAR(20), Sage NUMBER(20), CONSTRAINT PK_SNO PRIMARY KEY(Sno));

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题