关系的完整性
关系模型允许定义 3 类完整性约束:实体完整性、参照完整性和用户自定义的完整性。
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,称为两个不变性,应该由关系系统自动支持;
用户自定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。
(1)实体完整性(Entity Integrity)
实体完整性规则:
关系中的主键不能为空值,也不能有重复值。
(2)参照完整性(Referential Integrity)
设 F是基本关系 R的一个或一组属性,但不是关系 R 的主码。如果 F 与基本关系 S的主码Ks相对应,则称 F 是基本关系 R 的外码(Foreign Key),并称基本关系 R为参照关系(Referencing Relation),基本关系 S 为被参照关系(Referenced Relation)或目标关系(Target Relation)。关系 R 和关系 S 有可能是同一关系。
注:主码(主键)与外码(外键)的列名不一定相同,唯一的要求是它们的值的域必须相同。
参照完整性规则:
关系的外键必须是另一个关系主键的有效值,或者是空值。
(3)用户定义的完整性
用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。也称为域完整性或语义完整性。
按应用语义,属性数据有:
类型与长度限制:方便计算机操作
取值范围限制:防止属性值与应用语义矛盾
语义许可取值范围约束 例:成绩取:[0 … 100],{优、良、中、及格、不及格}