码迷,mamicode.com
首页 > 数据库 > 详细

[Database] 数据库完整性

时间:2015-11-05 12:00:30      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

一、实体完整性
–关系的主码中的属性值不能为空值
–空值:不知道或无意义
–意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的
 
二、参照完整性(Referential Integrity)

在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用

如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1 中某个元组的Pk 值,或者为空值
意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在
例如关系S在D#上的取值有两种可能
–空值,表示该学生尚未分到任何系中
–若非空值,则必须是DEPT关系中某个元组的D#值,表示该学生不可能分到一个不存在的系中
也就是说外码与主码的一个不同是可以为null
测试一下:
 
create table aa
(
a int not null primary key,
b int unique
)
create table bb
(
c int not null primary key,
d int,
constraint aa_bb_fk foreign key(d) references aa(a)
)
 
insert into bb values(1,null)
 
OK!

[Database] 数据库完整性

标签:

原文地址:http://www.cnblogs.com/deepblueme/p/4938949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!