传播约束

维基百科,自由的百科全书

数据库系统中,传播约束(propagation constraint)“详细说明了当我们更新目标表的一行或多行时相关表应该发生的情况”[1]:108。表使用主键外键关系实现链接。用户可能会更新其中的一个表导致这种关系不再保持一致,这称为破坏了参照完整性。例如,如果员工表包含“家庭用品部门”的部门编号,它是部门表的外键,并且用户从部门表中删除了该部门,则家庭用品部门员工记录将引用不再存在的部门编号。

关系数据库管理系统解决此问题的方法是传播约束,以确保表之间的关系保持无错。Beynon-Davies列出了关系数据库管理系统处理删除目标和关联元组的三种方式:

  • Restricted Delete - 在所有(通过外键)指向它的行都被删除之前,用户不能删除目标行。这意味着在从部门表中删除部门之前,需要删除所有家庭用品部门员工,或者更改他们的部门。
  • Cascades Delete - 可以删除目标行且所有(通过外键)指向它的行也被删除。
  • Nullifies Delete - 可以删除目标行并把所有(指向它的)外键都置为空。在这种情况下,删除家庭用品部门后,在该部门工作的员工的部门将具有NULL(未知)值。

参考文献[编辑]

  1. ^ Beynon-Davies, P. (2004) Database Systems Third Edition, Palgrave Macmillan.