引用完整性和表
引用完整性 是数据库中的一组表的条件,其中从一个表到另一个表的所有引用都有效。
考虑下列出例:
- CORPDATA.EMPLOYEE 充当员工的主列表。
- CORPDATA.DEPARTMENT 充当所有有效部门号的主列表。
- CORPDATA.EMP_ACT 提供对项目执行的活动的主列表。
其他表引用这些表中描述的相同实体。 当表包含有主列表的数据时,该数据应该实际出现在主列表中,否则引用无效。 包含主列表的表是 父表,而引用该表的表是 从属表。 当从从属表到父表的引用有效时,表集的条件称为 引用完整性。
另一种方法是,引用完整性是所有外键的所有值都有效的数据库的状态。 外键的每个值也必须存在于父键中或为空。 此引用完整性定义需要了解以下术语:
- 唯一键 是表中唯一标识行的列或列集。 虽然表可以具有多个唯一键,但表中的任何两行都不能具有相同的唯一键值。
- 主键 是不允许为空的唯一键。 一个表不能有多个主键。
- 父键 是唯一键或引用约束中引用的主键。
- 外键 是一个列或一组列,其值必须与父键的值相匹配。 如果用于构建外键的任何列值为空,那么规则不适用。
- 父表 是包含父键的表。
- 从属表 是包含外键的表。
- 后代表 是作为从属表或从属表的后代的表。
强制实施引用完整性可防止违反规则,该规则规定每个非空外键都必须具有匹配的父键。
SQL 通过 CREATE TABLE 和 ALTER TABLE 语句支持引用完整性概念。