1.3.2 关系的完整性

为了维护数据库中数据与实际的一致性,关系数据库中的数据在进行插入、删除与更新操作时,必须遵循数据完整性规则。数据的完整性规则是对关系的某种约束条件。在关系模型中有三类完整性规则,即实体完整性、参照完整性和用户定义的完整性规则。其中,实体完整性和参照完整性是关系模型必须满足的完整性约束,被称为关系的两个不变性,由关系型数据库管理系统(Relational DataBase Management System,RDBMS)自动支持。

1. 实体完整性

若属性或属性集A是关系R的关键字,则任何一个元组在A上不能取空值(Null)。所谓空值,就是“不知道”或“无意义”的值。例如,在“教师”表中,“教师编号”不能取空值。

2. 参照完整性

如果关系R中某属性集F是关系S的关键字,则对关系R而言,F被称为外部关键字,并称关系R为参照关系,关系S为被参照关系或目标关系。参照完整性是指关系R的任何一个元组在外部关键字F上的取值要么是空值,要么是被参照关系S中一个元组的关键字值。参照完整性要保证不引用不存在的实体。

表在建立关联关系以后,可以设置参照完整性,参照完整性中的规则可以使在对表进行记录的插入、删除和更新时,既能保持已定义的表间的关系,又能使被关联的表中的数据保持一致性。

3. 用户定义完整性

任何关系数据库系统都应该支持实体完整性和参照完整性,在实际应用中,用户还可以定义完整性。用户定义的完整性就是针对某一具体应用环境的约束条件,例如,某个属性必须取唯一值,某个属性不能取空值(如“学号”,这就要求学生的学号不能取空值),某个属性的取值范围在1~100之间(如某门课的成绩)等。