完整性约束和参照完整性的区别

日期: 2008-07-01 作者:Rudy Limeback 来源:TechTarget中国 英文

问:完整性约束和参照完整性的区别是什么?   答:问题提得好。参照完整性,又被称为关联完整性,意思是说,如果一个表包含一个外键列,那么会发现这个列中的每一个值(除了空,如果允许为空)都在关联表或参照表(声明外键的语法使用了关键字REFERENCES)的主键里。   例如,让我们假设你有一个用户表和一个图片表,每一个图片属于一个用户:   Users      Images      你能发现它的参照完整性问题吗?   有时很难说服有经验的程序员他们应该为他们的表声明外键。“为什么我们不能,”他们问,“只对用户查询一下以确定它存在,然后插入图片?”当然,这个问题的答案,是(a)并非所有的数据库更……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:完整性约束和参照完整性的区别是什么?

  答:问题提得好。参照完整性,又被称为关联完整性,意思是说,如果一个表包含一个外键列,那么会发现这个列中的每一个值(除了空,如果允许为空)都在关联表或参照表(声明外键的语法使用了关键字REFERENCES)的主键里。

  例如,让我们假设你有一个用户表和一个图片表,每一个图片属于一个用户:

  Users

  图片表

  Images

  图片表

  你能发现它的参照完整性问题吗?

  有时很难说服有经验的程序员他们应该为他们的表声明外键。“为什么我们不能,”他们问,“只对用户查询一下以确定它存在,然后插入图片?”当然,这个问题的答案,是(a)并非所有的数据库更新都是通过应用进行的(更新也可以通过批量加载、SQL窗口、命令行等等),(b)为什么程序员觉得他们得从头做起呢?如果声明了外键,数据库将会替你搜索。

  参照完整性只是数据库完整性的一个类型,尽管可以证明它是最重要的。完整性约束是确保数据库完整性的任何约束。完整性约束的各种类型如下:

  NOT NULL(非空)

  保证一列不能没有空值。

  UNIQUE KEY(唯一键)

  保证键的每一个值最多只出现一次(注意唯一键可以包含不止一列)。

  PRIMARY KEY(主键)

  除了主键不可为空之外,其余和唯一键一样。主键完整性也被称为实体完整性。

  FOREIGN KEY(外键)

  它的值(除了空,如果允许的话)必须在参照的主键或唯一键中被查询到。

  CHECK(检查)

  在表的每一行上强制加了一个条件。例如,CHECK (age >= 18)确保你不能以小于18的年龄值插入或更新一行。检查完整性经常用于域完整性,来确保一列只有某些特定的值。

  ASSERTION(断言)

  一个强制加在多个表上的条件(因此它的声明区分于create TABLE的声明)。很少的数据库管理系统支持断言。

相关推荐