数据库的完整性

网友投稿 474 2022-08-22

数据库的完整性

一、什么是数据库完整性

数据库的完整性是指数据库中数据的正确性和相容性。

数据库完整性由各种完整性约束来保证。而完整性约束既可以通过DBMS来保障,也可以通过应用程序来实现。如果是基于DBMS,完整性约束将作为关系模式的一部分存入数据库,也就是说,直接在数据库进行定义。

二、完整性的保护措施

1、约束条件 对数据库中数据设置一些约束条件,作完整性检查。完整性约束条件的作用对象可以是关系(即表)、元组(即行)、属性(即字段、列)。约束在表中定义,运行时检查,发现条件不满足即通知用户,以便采取措施。

数据库约束分为静态约束和动态约束。

1)静态约束 数据库中数据的语法、语义限制与数据之间的逻辑约束称为静态约束。静态约束反映了数据及其之间的固有逻辑特性,是最重要的一类完整性约束。

静态约束包括:

(1)静态属性级约束 数据类型的约束 数据格式的约束 取值范围或取值集合的约束 空值的约束 其他约束

(2)静态元组约束 静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。(空口无凭)

(3)静态关系约束

【实体完整性约束】 要求主键中的任一属性都不能为空

【参照完整性约束】 地球人都知道,主外键。它们所在的元组删除时,有 级联删除:一起删除 受限删除:不能删除,除非先将外键所在元组删除 置空删除:主键元组删除,外键元组的外键置空

除了删除,还有插入: 受限插入:存在对应的主键时,外键所在元组才被插入 递归插入:先插入主键元组,再插入外键元组

【函数依赖约束】:不清楚是什么鬼 【统计约束】:不清楚是什么鬼

2)动态约束 数据库中的数据变化应遵守的规则称为数据动态约束,它反映了数据库状态变迁的约束。包括(1)动态属性级约束 修改属性定义时的约束,修改属性值时的约束

(2)动态元组 修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。

(3)动态关系约束 加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。

2、触发器 触发器在功能上比约束要强得多。一般来说,违反约束条件时,约束仅给出必要提示,而触发器不仅起到提示,还可以触发系统自动进行某些操作。触发器分为事前触发和事后触发。

触发器除了完整性保护功能外,还有安全性保护功能。

3、应用程序 用代码来实现,不必多言。好处是想怎么写就怎么写,灵活得很,数据库也没有太多约束,简单。简单的往往就是最好的。但是,我们自己写代码,往往达不到好的效果。比如,数值的唯一性。代码在往数据库插入记录的时候,可以拿现有最大值,然后加1。但在并发的情况下,其实不可靠。数据库的唯一索引才能保证不出问题。

参考资料​​​《数据库系统概论》 数据库完整性​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《计算机视觉40例》勘误
下一篇:深入理解python之self(谈谈对python的认识)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~