DBMS的完整性控制机制应具有哪些功能?
发布网友
发布时间:2022-03-28 02:39
我来回答
共1个回答
热心网友
时间:2022-03-28 04:08
·定义功能,提供定义完整性约束条件的机制。
·检查功能,检查用户发出的操作请求是否违背了完整性约束条件。
·违约处理,如果发现用户的操作请求使数据违背于完整性约束条件i则采取一定的动作来保证数据的完整性。
完整性约束条件包括有六大类,约束条件可能非常简单,也可能极为复杂。
一个完善的完整性控制机制应该允许用户定义所有这六类完整性约束条件。
检查是否违背完整性约束的时机通常是在一条语句执行完后立即检查,称
这类约束为立即执行约束(Immediate Constraints)。有时完整性检查需要延
迟到整个事务执行结束后再进行,检查正确方可提交,称这类约束为延迟执行
约束(Deferred Constraints)。例如银行数据库中“借贷总金额应平衡”的约
束就应该是延迟执行的约束,从账号A转一笔钱到账号B为一个事务,从账
号A转出去钱后账就不平了,必须等转入账号B后账才能重新平衡,这时才
能进行完整性检查。
如果发现用户操作请求违背了完整性约束条件,系统将拒绝该操作、,但对
于延迟执行的约束,系统将拒绝整个事务,把数据库恢复到该事务执行前的
状态。
一条完整性规则可以用一个五元组 (D,O,A,C,P)来表示,其中:
·D(Data) 约束作用的数据对象;
·O(Operation) 触发完整性检查的数据库操作,即当用户发出什么操作
请求时需要检查该完整性规则,是立即检查还是延迟检查;
·A(Assertion) 数据对象必须满足的断言或语义约束,这是规则的。主体;
·C(Condition) 选择A作用的数据对象值的谓词;
·P(Proeere) 违反完整性规则时触发的过程。
例如 在“学号不能为空”的约束中
D 约束作用的对象为Sno属性
O 插入或修改Student元组时
A Sno不能为空
c 无(A可作用于所有记录的Sno属性)
P 拒绝执行该操作
又如,在“教授工资不得低于1000元”的约束中
D 约束作用的对象为工资Sal属性
O 插入或修改职工元组时
A Sal不能小于1000
C 职称='教授' (A仅作用于职称='教'的记录)
P 拒绝执行该操作
在关系系统中,最重要的完整性约束是实体完整性和参照完整性,其他完
整性约束条件则可以归入用户定义的完整性。