菜鸟总结之——数据完整性 转数据库是我们存放数据的仓库,而需要我们保存的数据肯定都是精确而且可靠的,当我们对这些数据做一些增删改查时,保护数据的完整和一致是我们必须做到的。所以我们下面来说说数据的完整性。 我们先来看这张图: 一:概念与作用的联系。 在SQLServer联机丛书中,将数据完整性解释如下:“存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。”也就是说数据完整性就是指数据的精确性和可靠性。概念与作用是一体的,它就是为了达到保护数据精确性和可靠性而提出的一个概念。 二:分类和方式的对应。 从图中可以看出: 1.Primary Key(主键约束)是实体完整性的体现。 2. 域完整性则是对表中的字段做了要求,它对应的是方式中的数据类型、Not Null约束、Check束、Foreign Key约束、Default约束和默认值。 3.参照完整性:指两个表的主键和外键的数据应对应一致。 它的作用有: (1)禁止在从表中插入包含主表中不存在的关键字的数据行。 (2)禁止会导致从表中相应值孤立的主表中的外键值的改变。 (3)禁止删除在从表中有对应记录的主表的记录。 三:check约束与规则。
四:默认值与Default约束的区别 两者的作用相同,只是默认值更类似与规则,它独立于表,可以通过定义一次,多次应用的任意表任意列,还可以用到用户定义的数据类型上。 五:如何选择方法。 在这些方法中,触发器功能强大,即可以维护基础的数据完整性逻辑,又可以维护复杂的完整性逻辑,如多表的级联操作,但是开销较高;约束的功能比触发器弱,但开销底;默认和规则功能更弱,开销也更低;数据类型提供最低级别的数据完整性功能,开销也是最底的。 在选择完整性方案时,应该遵循在完成同样任务的条件下,选择开销底的方案解决。也就是说,能使用约束完成的就不用触发器;能用数据类型完成的功能,就不用规则来完成。 附一张图是三种类型数据完整性实施方法的比较: |
|