实体完整性
定义:若属性A是基本关系R的主属性 ,则属性A不能取空值(空值就是“不知道”或“不存在”或“无意义”的值)
例:
选修(学号,课程号,成绩)
“学号、课程号”为主码
“学号”和“课程号”两个属性都不能取空值
实体完整性规则的说明:
- 实体完整性规则是针对基本关系而言的。 一个基本表通常对应现实世界的一个实体集。
- 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
- 关系模型中以主码作为唯一性标识。
主码中的属性即主属性不能取空值 。
主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性
参照完整性
定义:指如果属性(或属性组)F是关系R的外码,且对应了关系S的主码K(R和S可以是同一个关系),那么对于R中的每个元组中的F上的值,必须满足: (1) 要么F取空值 (2) 要么等于S中某个元组的主码的值
例:
学生(学号,姓名)
课程(课程号,课程名)
选修(学号,课程号,成绩)
选修表中的学号就称为选修表的一个外码,它对应的是学生表中的学号。并且称选修关系为参照关系 ,而学生关系为被参照关系 。显然,在选修关系中的学号,必须是学生表里真正存在的学号,且选修表里的课程号,也必须是课程表里真正存在的课程号。这就是参照完整性的一个典型表现了。
参照完整性规则的说明:
- 关系R和S不一定是不同的关系
- 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上
- 外码并不一定要与相应的主码同名
用户定义完整性
任何关系型数据库,都一定要支持实体完整性和参照完整性。 但同时往往在不同的情况下,我们还需要一些特殊的约束条件,比如性别只能是男或女,年龄不能超过150岁等等。 这种针对某一具体关系数据库的约束条件称为用户定义的完整性,它反映某一具体应用所涉及的数据必须满足的语意要求。
Reference: 关系的三类完整性约束 数据库关系模型的三类完整性约束
|