子类型实现中的引用完整性
简介
子类型结构中的引用完整性确保是父表和子表之间的有效关系。独占子类型仅允许给定父级有一种子类型,而非独占子类型允许多个子类型。
独占子类型
要实现独占子类型的引用完整性:
-
鉴别器列: 在父表中添加一个鉴别器列来指示子类型。
- 实现 CHECK CONSTRAINT 以确保鉴别器值在允许的范围内。
-
主键与外键关系:父级的主键表成为子类型表中的外键,确保每个父行都有一个子类型。
-
用户定义函数 (UDF): 创建一个 UDF,检查主键和鉴别器是否存在在父表中。
-
子类型表中的检查约束: 实施检查子类型表中的约束,用于调用 UDF 并验证父项是否存在。
-
事务检查: 使用事务逻辑来验证每个父项至少存在一个子类型。
非排他性子类型
对于非独占子类型:
-
主键到外键关系:像独占子类型一样建立主键到外键关系。
-
存在检查:使用父主键对子类型表进行存在性检查,以确定子类型是否存在或不是。
基于 UDF 的方法的优点
- 避免数据重复和索引过度。
- 处理子类型的场景父母当时不在场insert.
回复评论
-
更新鉴别器保护:开放架构标准(ACID 事务)防止未经授权的更新。此外,对数据库的受控访问和事务的使用可确保更新保持数据完整性。
-
UDF 与重复鉴别器 FK:UDF 提供更高效、更灵活的解决方案,无需额外的表格和索引。
以上是如何在独占和非独占子类型数据库实现中维护引用完整性?的详细内容。更多信息请关注PHP中文网其他相关文章!