数据库是我们存放数据的仓库,而需要我们保存的数据肯定都是精确而且可靠的,当我们对这些数据做一些增删改查时,保护数据的完整和一致是我们必须做到的。所以我们下面来说说数据的完整性。
我们先来看这张图:
一:概念与作用的联系。
在sqlServer联机丛书中,将数据完整性解释如下:“存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。”也就是说数据完整性就是指数据的精确性和可靠性。概念与作用是一体的,它就是为了达到保护数据精确性和可靠性而提出的一个概念。
二:分类和方式的对应。
从图中可以看出:
1.Primary Key(主键约束)是实体完整性的体现。
2. 域完整性则是对表中的字段做了要求,它对应的是方式中的数据类型、Not Null约束、Check束、Foreign Key约束、Default约束和默认值。
3.参照完整性:指两个表的主键和外键的数据应对应一致。
它的作用有:
(1)禁止在从表中插入包含主表中不存在的关键字的数据行。
(2)禁止会导致从表中相应值孤立的主表中的外键值的改变。
(3)禁止删除在从表中有对应记录的主表的记录。
三:check约束与规则。
规则是一个向后兼容的功能,用于执行一些与CHECK约束相同的功能。 CHECK约束是用来限制列值的首选标准方法。 一个列只能应用一个规则,但是却可以应用多个CHECK约束。 规则需要单独创建,check约束在建表的同时就可以创建。 规则比check约束更复杂功能更强大。 规则只需创建一次,以后就可以多次使用,可以应用于多了表多了列,还可以用到用户定义的数据类型上。四:默认值与Default约束的区别
两者的作用相同,只是默认值更类似与规则,它独立于表,可以通过定义一次,多次应用的任意表任意列,还可以用到用户定义的数据类型上。
五:如何选择方法。
在这些方法中,触发器功能强大,即可以维护基础的数据完整性逻辑,又可以维护复杂的完整性逻辑,如多表的级联 *** 作,但是开销较高;约束的功能比触发器弱,但开销底;默认和规则功能更弱,开销也更低;数据类型提供最低级别的数据完整性功能,开销也是最底的。
在选择完整性方案时,应该遵循在完成同样任务的条件下,选择开销底的方案解决。也就是说,能使用约束完成的就不用触发器;能用数据类型完成的功能,就不用规则来完成。
附一张图是三种类型数据完整性实施方法的比较:
总结以上是内存溢出为你收集整理的菜鸟总结之——数据完整性全部内容,希望文章能够帮你解决菜鸟总结之——数据完整性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)