关系模型的完整性规则是对关系的某种约束条件。
顾名思义,关系的完整性规则是对关系的约束,这些约束条件实际上是现实世界的要求。
关系模型中有三类完整性的约束:实体完整性,参照完整性,用户定义的完整性。
1.实体完整性
实体完整性定义:
若属性A(一个或一组属性)是基本关系R的主属性,则A不能取空值。
所谓空值就是“不知道”或“不存在”或“无意义”的值。
这是书本上给的定义,并给出了完整性规则说明:
1.1实体完整性规则是针对基本关系而言的。
我自己的理解:关系可以理解为实体或关系,具体化就是一张表,实体可以为一张表,关系可以为一张表。
所以实体完整性可以理解为是仅对一张表的完整性约束。
1.2现实世界的实体是可以区分的,他们具有某种唯一性标识。
我自己的理解:毋庸置疑,现实世界实体是可以区分的,很多老师上课的时候喜欢拿姓名为例,我觉得一定程度上迷惑了初学者,既然实体是可以区分的,他们具有某种唯一性标识,比如指纹,中国大陆的身份证号,如果你是大学生的话,学号就是你们的唯一性标识。1.2强调的是现实中的实体他们具有唯一性标识,但是这种标识不唯一,例如指纹,中国大陆身份证号码。
1.3相应地,关系模型中以主码作为唯一性标识。
1.4主码中的属性不能取空值。如果主属性取空值,就说明存在某个不可比标识的实体,与1.2相违背,因此这个规则称为实体完整性。
我自己的理解: 主码可以是多个主属性的组合,每个主属性不能单独作为主码。在学习参照完整性之前一定要理解实体完整性规则,实体完整性规则举例:一个学生表,学号(Sno)可以唯一标识学生,课程表(Cno)可以唯一标识课程。