F_G

许多问题需要说清楚就可以&&走永远比跑来的重要

导航

[Database] 数据库完整性

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

posted on 2015-11-05 11:37  F_G  阅读(168)  评论(0编辑  收藏  举报