前言
关系模型的完整性约束规则是对关系的某种约束条件,是对现实世界的要求的反应,关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须要满足的完整性约束条件,被称作是关系的两个不变性,而用户定义的完整性是应用领域需要遵循的约束条件,可以体现了具体领域中的语义约束
实体完整性
定义:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(null),即一张表中的主码不可为空(null)
规则说明:
- 实体完整性规则是针对基本关系而言的,就是只在基本表上使用
- 现实世界中的实体是可区分的,即它们具有某种唯一性标识
- 相应地,关系模型中以主码作为唯一性的标识
- 主码中的属性即主属性不能取空值
参照完整性
定义:设F是基本关系R的一或一组属性,但不是关系R的码,Ks是基本关系的主码S的主码,如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系
规则说明:
- 外码可以为空
- 且外码必须等于被参照属性的值
- 同一基本表可以互相参照
如下面两张表可知,学号是学生表的主码,课程号是学生表的外码,参照了课程表的主码,课程表与学生表是被参照关系
学号(主码) | 姓名 | 性别 | 年龄 | 课程号(外码) |
---|---|---|---|---|
1 | 王五 | 男 | 20 | 1 |
课程号(主码) | 课程名 | 教授老师 |
---|---|---|
1 | 数据库 | 张三 |
用户定义的完整性
用户针对某一现实应用程序的某些要求,对基本表进行添加特殊约束条件
用户定义的完整性约束条件主要有:
- 列值非空(not null)
create table(
name char(10) not null,
........
)
- 列值为一(unique)
create table(
name char(10) unique not null,
........
)
- 检查列值是否满足一个条件表达式(check短语)
create table(
name char(10) not null,
sex char(2) ,
........
check(sex='男' or sex= '女')
)
借鉴
王珊,萨师煊.数据库系统概论(第五版)[M].北京:高等教育出版社,2014:45-48.