我正在为个人项目设计一个小型数据库,其中一个表,称为表C
,需要有两个表之一的外键,调用它们A
and B
,因条目而异。实现这一点的最佳方法是什么?
到目前为止的想法:
- Create the table with two nullable foreign key fields connecting to the two tables.
- 可能有一个触发器来拒绝插入和更新,这将导致其中 0 或 2 个为空。
- Two separate tables with identical data
解决这个问题的更优雅的方法是什么?
您正在描述一种称为多态关联的设计。这常常会给人们带来麻烦。
我通常推荐的:
A --> D <-- B
^
|
C
在此设计中,您创建一个公共父表D
那两个A
and B
参考。这类似于面向对象设计中的常见超类型。现在你的孩子表C
可以引用超级表,然后从那里您可以访问相应的子表。
通过约束和复合键,您可以确保给定的行D
只能参考A
or B
但不是两者兼而有之。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)