deepblueme

[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!

分类:

技术点:

相关文章:

  • 2021-09-16
  • 2021-07-01
  • 2021-11-04
  • 2021-08-16
  • 2021-11-04
  • 2021-08-18
  • 2021-10-03
  • 2021-09-07
猜你喜欢
  • 2021-12-06
  • 2021-10-22
  • 2021-08-02
  • 2021-04-20
相关资源
相似解决方案