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

我们先来看这张图:

一:概念与作用的联系。

在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列级)缺省值规则、触发器或存储过程实体完整性主键约束惟一约束恨一的聚饮索引恨一的」卜聚簇索引参照完整性外切参照约束指定外健、触发器或存储过程

菜鸟总结之——数据完整性相关推荐

  1. 菜鸟也能飞:SQL数据库实战专业教程(二)

    四.需求分析→数据库设计 从这开始,就真正进入项目实战啦.先说点体会,我刚开始接触编程的时候,都是编写一些小东西,往往都是半天或者一天什么的就编完了,那时候根本没想过做程序之前还要有需求分析.经过快两 ...

  2. 关于不使用外键(或软删除)的情况下如何保证关联数据完整性的思考

    引言     最近在修改公司项目中由于用户数据软删除引发的一系列问题时,对于外键的使用也进行了一波思考. 相信看过阿里开发手册的朋友们应该看到过这一段话 因此特意百度了一番,众说纷纭.当然今天不是为了 ...

  3. PostgreSQL从菜鸟到专家 什么是数据库管理系统

    什么是数据库管理系统 韦氏在线字典(Merriam-Webster online dictionary,http://www.merriam-webster.com)定义数据库为一个为(通过计算机)高 ...

  4. python 非线性回归_机器学习入门之菜鸟之路——机器学习之非线性回归个人理解及python实现...

    本文主要向大家介绍了机器学习入门之菜鸟之路--机器学习之非线性回归个人理解及python实现,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 梯度下降:就是让数据顺着梯度最大的方向,也 ...

  5. python处理pdf实例_Python实战-从菜鸟到大牛的进阶之路pdf_Python教程

    资源名称:Python实战-从菜鸟到大牛的进阶之路 pdf 第1章 Python 处理 cassandra 升级后的回滚脚本 第 2 章 多套方案来提高 python web 框架的并发处理能力 第 ...

  6. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...

  7. 一个6年的菜鸟,在4年之前做的一些功能(二)

    前戏:针对上一篇列出来的功能点,今天和大家分享下这个自定义的公式是怎么设计的,由于我的第一篇博客在首页被管理员移走了,大家可以点击这里来跳转,看下第一篇的目录结构.本人作为老菜鸟,和大家分享的也是一些 ...

  8. asp.net2.0学习历程 菜鸟到中级程序员的飞跃【月儿原创】

    asp.net2.0学习历程 菜鸟到中级程序员的飞跃 --30本好书点评 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.5.1 ...

  9. 全局变量和局部变量的区别_值得收藏!8大技巧,带你了解菜鸟和高手的区别!...

    对于Python编程者而言,或许大家都认为Python是非常简单易学的,在学习一段时间的Python之后,都认为自己的Python编程水平已经非常好了,但是python编程绝对不是简单的几句语法就可以 ...

最新文章

  1. hive 小技巧总结
  2. Java调用动态库(转载)
  3. Dart 基礎 - 4
  4. 14. OD-inline patch入门,将一段代码和变量分别注入一个程序中
  5. MySQL—Linux查看客户端连接信息(连接数、进程等)及SpringBoot配置数据库模板
  6. service docker start后docker stop/waiting的解决方法
  7. SaltStack 介绍和安装
  8. springAOP,面向切面编程详解,通俗易懂
  9. 计算机网络教程第六章应用层课后习题答案
  10. 关于“访问映射网络驱动器提示 本地设备名已在使用中,此连接尚未还原”的解决方法
  11. 亮点前瞻 | 首届 ServerlesssDays · China 大会议程发布
  12. hdu1713相遇周期
  13. Python 改写__str__
  14. 管理是一门艺术,好坏全在细微之间
  15. pdfminer转换PDF为html,【记录】尝试使用pyPdf将不可复制的PDF转换为文本或HTML
  16. 运用深度学习技术检测转移性乳腺癌
  17. 量子计算机九章潘建伟,从墨子号到九章量子计算机,潘建伟如何从无到有建立我国量子优势...
  18. Dism命令安装组策略(gpedit.msc)
  19. 完整的连接器设计手册_深度解析特斯拉的电池快充连接器技术|附视频
  20. 华为交换机常见链路聚合操作

热门文章

  1. 解释:无法定位程序输入点xxxx于动态链接库xxxx.dll上
  2. 三态门三个状态vhdl_[转帖]INOUT双向端口仿真 三态门构成 三态门原理 三态门仿真...
  3. HTML——头部引入网页图标
  4. win7无法安装msi解决办法
  5. 团队目标WBS及具体任务分工
  6. PCIe 6.0概述
  7. uniapp npm 版本升级
  8. 禁止Mac自动打开Android File Transfer
  9. ASP.NET_阻止图片盗链
  10. 讯飞错误码10116