2.3.2 参照完整性
2025年09月26日
2.3.2 参照完整性
【定义2.5】 设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应(F与Ks来自同一个域,并且在现实世界中对应相同的语义),则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系,基本关系S为被参照关系。
比如,有如下关系模式:
学生(学号,姓名,性别,所在系,出生日期),学号是主码
选课(学号,课程号,成绩),学号,课程号联合是主码
在这两个关系模式中,学生关系的学号与选课关系的学号相对应,学号是学生关系的主码,但不是选课关系的主码,因此,学号是选课关系的外码。同时,选课关系是参照关系,学生关系是被参照关系。
参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对应关系R中每个元组在F上的取值,只能是以下两种情况之一:
取空值;
或者等于关系S中某个元组的主码值。
根据参照完整性规则,上述“选课”关系模式中,学号的取值要么取空值,要么等于“学生”关系中某个元组的主码值。
参照完整性属于表与表之间(关系之间)的规则,参照完整性是数据库中表与表之间存在主关键字(主码)与外部关键字(外码)的约束关系,利用这些约束关系可以维护数据的一致性或相容性,即在数据库的多个表之间存在某种参照关系。对于有参照完整性约束的相关表,在修改、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:
①当对含有外码的表(参照表)进行插入、修改操作时,必须检查新行中外码的值在被参照表中是否存在,若不存在就不能执行该操作。
②当对被参照表中的行进行删除、修改操作时,必须检查被删除行或被修改行中主关键字的值是否在被一个或多个外码参照引用,若正被参照就不能执行该操作。