求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

参照完整性查看源代码讨论查看历史

跳转至: 导航搜索
  参照完整性

参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。参照完整性又称引用完整性。

简介

参照完整性是关系模型的完整约束之一,属于数据完整性的一种,其余还有:实体完整性、用户自定义完整性。参照完整性规则:若属性或属性组F是基本关系R的外键,它与基本关系S的主键Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须为:(1)空值,F的每个属性值均为空值。(2)S中某个元组中的主键值(主码值)。即参照的关系中的属性值必须能够在被参照关系找到或者取空值,否则不符合数据库的语义。在实际操作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,不正确则拒绝操作。这里的“学号”和“课程号”属性都是选课关系的外键,但只有“学号”和“课程号”联合起来才能确定选课的关系,所以这里存在一个复合主键关系,(学号,课程号)是选课关系的主键。虽然按照参照完整性可以取两类值,但是由于实体完整性,复合主键中的每个属性均不能取空值。所以选课关系中的”学号“和”课程号”属性实际上只能取被参照关系(学生关系和专业关系)中已经存在的主键值。即选课关系中的“学号”值必须是确实存在的学生的学号,学生关系中有该学生的记录;选课关系中的“课程号”值也必须是确定存在的课程的课程号,即课程关系中有该课程的记录。

评价

参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些涉及表间数据的完整性,统称为参照完整性。参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的操作要影响到另一个表中的记录。如果实施了参照完整性,那么当主表中没有相关记录时,就不能将记录添加到相关表中。也不能在相关表中存在匹配的记录时删除主表中的记录,更不能在相关表中有相关记录时,更改主表中的主键值。也就是说,实施了参照完整性后,对表中主键字段进行操作时系统会自动地检查主键字段,看看该字段是否被添加、修改、删除了。如果对主键的修改违背了参照完整性的要求,那么系统就会自动强制执行参照完整性。[1]

参考文献