首页 理论教育关系数据模型的完整性约束条件

关系数据模型的完整性约束条件

【摘要】:关系数据模型的完整性约束条件是对关系的某种约束条件。其中,实体完整性和参照完整性是关系数据模型必须满足的完整性约束条件,称作关系的两个不变性,必须由关系系统自动支持。因此,关系模型必须保证每个实体都是完整的,都要遵守实体完整性约束条件,即关系中主键的所有属性都不能取空值。用户定义的完整性用户定义的完整性是用户针对某一具体关系数据库定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

关系数据模型的完整性约束条件是对关系的某种约束条件。关系数据模型中有三类完整性约束条件,分别是实体完整性、参照完整性和用户定义的完整性。其中,实体完整性和参照完整性是关系数据模型必须满足的完整性约束条件,称作关系的两个不变性,必须由关系系统自动支持。

(1)实体完整性

实体完整性是指应该使关系中的每个实体都能被识别和区分,因为现实世界中的实体都是可区分的,具有唯一性标识。相应地,在关系模型中以主键来唯一地标识每个实体,而且作为唯一性标识的主键不能取空值,因为空值是指“不知道”或“无意义”的值,取空值则说明存在某个不可识别的实体,这与现实世界是互相矛盾的,所以这个实体一定不是一个完整的实体。因此,关系模型必须保证每个实体都是完整的,都要遵守实体完整性约束条件,即关系中主键的所有属性都不能取空值。

(2)参照完整性

参照完整性又称“引用完整性”。由于现实世界中的实体之间一般都存在某种联系,而在关系模式中实体及实体间的联系都是用关系来描述的,因此就存在关系和关系间的引用。例如,以下“学生”和“专业”两个关系就存在互相引用的情况:

学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)

在这两个关系中,“学生”关系引用了“专业”关系的主键“专业号”。因而“学生”关系中的“专业号”值必须是“专业”关系中有记录的专业号,即“学生”关系中的“专业号”这个属性的值必须引用“专业”关系中的“专业号”属性值。(www.chuimin.cn)

设F是基本关系R的一个或一组属性,但不是关系R的主键,如果F与基本关系S的主键Ks相对应,则称F是基本关系R的外键(Foreign Key)。即若F不是R的主键,但是S的主键,则称F是关系R的外键。基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。

参照完整性约束条件:若属性(或属性组)F是基本关系R的外键,它与基本关系S的主键Ks相对应,则R中每个元组在F上的值必须为空值(F的每个属性值均为空值),或者等于S中某个元组的主键值。

例如,对于本例,“学生”关系中的每个元组的“专业号”属性只能取以下两类值:

①空值,表示尚未给该学生分配专业;

②非空值,这时“学生”关系中的专业号值必须是“专业”关系中存在的某个专业号值,即被参照关系“专业”中一定存在一个元组,其主键值等于该参照关系“学生”中的外键值。

(3)用户定义的完整性

用户定义的完整性是用户针对某一具体关系数据库定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。例如,可以规定某个属性必须取唯一值,某个非主键属性也不能取空值,某个属性的取值范围必须在0~100之间等。