问:完整性约束和参照完整性的区别是什么? 答:问题提得好。参照完整性,又被称为关联完整性,意思是说,如果一个表包含一个外键列,那么会发现这个列中的每一个值(除了空,如果允许为空)都在关联表或参照表(声明外键的语法使用了关键字REFERENCES)的主键里。 例如,让我们假设你有一个用户表和一个图片表,每一个图片属于一个用户: Users Images 你能发现它的参照完整性问题吗? 有时很难说服有经验的程序员他们应该为他们的表声明外键。“为什么我们不能,”他们问,“只对用户查询一下以确定它存在,然后插入图片?”当然,这个问题的答案,是(a)并非所有的数据库更……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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的声明)。很少的数据库管理系统支持断言。
相关推荐
-
在MDM hub与交易数据库之间保持参照完整性
如何在一个MDM hub与一个交易数据库之间确保其参照完整性,专家Jill Dyché给出了解答,并讲解了参照完整性的概念。
-
数据库应用系统中的数据库完整性(下)
在实施数据库完整性设计的时候,有一些基本的原则需要把握,包括考虑数据库完整性约束以及慎重使用触发器等。