菜鸟总结之——数据完整性

     数据库是我们存放数据的仓库,而需要我们保存的数据肯定都是精确而且可靠的,当我们对这些数据做一些增删改查时,保护数据的完整和一致是我们必须做到的。所以我们下面来说说数据的完整性。

我们先来看这张图:

一:概念与作用的联系。

        在SQLServer联机丛书中,将数据完整性解释如下:“存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。也就是说数据完整性就是指数据的精确性和可靠性。概念与作用是一体的,它就是为了达到保护数据精确性和可靠性而提出的一个概念。

二:分类和方式的对应。

       从图中可以看出:

     1.Primary Key(主键约束)是实体完整性的体现。

    2. 域完整性则是对表中的字段做了要求,它对应的是方式中的数据类型、Not Null约束、Check束、Foreign Key约束、Default约束和默认值

     3.参照完整性:指两个表的主键和外键的数据应对应一致。

它的作用有:

             1)禁止在从表中插入包含主表中不存在的关键字的数据行。

             2)禁止会导致从表中相应值孤立的主表中的外键值的改变。

             3)禁止删除在从表中有对应记录的主表的记录。

三:check约束与规则。

  1.         规则是一个向后兼容的功能,用于执行一些与CHECK约束相同的功能。
  2.       CHECK约束是用来限制列值的首选标准方法。
  3.       一个列只能应用一个规则,但是却可以应用多个CHECK约束。
  4.       规则需要单独创建,check约束在建表的同时就可以创建。
  5.       规则比check约束更复杂功能更强大。
  6.       规则只需创建一次,以后就可以多次使用,可以应用于多了表多了列,还可以用到用户定义的数据类型上。

四:默认值与Default约束的区别

       两者的作用相同,只是默认值更类似与规则,它独立于表,可以通过定义一次,多次应用的任意表任意列,还可以用到用户定义的数据类型上。

五:如何选择方法。

        在这些方法中,触发器功能强大,即可以维护基础的数据完整性逻辑,又可以维护复杂的完整性逻辑,如多表的级联操作,但是开销较高;约束的功能比触发器弱,但开销底;默认和规则功能更弱,开销也更低;数据类型提供最低级别的数据完整性功能,开销也是最底的。

         在选择完整性方案时,应该遵循在完成同样任务的条件下,选择开销底的方案解决。也就是说,能使用约束完成的就不用触发器;能用数据类型完成的功能,就不用规则来完成。

附一张图是三种类型数据完整性实施方法的比较:

计算机生成了可选文字: 完整性约束其他方法(包括缺省和规则)域完整性DEFAULT约束CH成K约束叹表级I列级)缺省值规则、触发器或存储过程实体完整性主键约束惟一约束恨一的聚饮索引恨一的」卜聚簇索引参照完整性外切参照约束指定外健、触发器或存储过程

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值