【发布时间】:2011-11-02 00:14:20
【问题描述】:
我目前遇到一个问题,想知道是否有更好的解决方案来解决这种情况。最初我有三个实体,A、B 和 X。它们的关系如下。
- A-B:一对多
- A-X:一对多
- B-X:一对多
例如,A 中的一行可能与 B 和 X 中的许多行相关联。此外,B 中的一行可能与 X 中的许多其他关联行。
我考虑过的一些选项:
-
复制 X
所以我们有 A-B、A-X1 和 B-X2,其中 X1 和 X2 相同,只是表名不同。
-
使用多态关联
X 现在有两列 parent 和 parent_id 指示行与哪个表 A 或 B 相关联。
-
反转多态关联
另外创建了两个表,AX 和 BX。关系很简单。
A--AX--X--BX--B
-
为 X 使用额外的外键。
X 现在有两列,A_id 和 B_id。如果一行与 A 相关联,则 B_id 为空。如果一行与 B 相关联,则 A_id = A.id 并且 B_id = B.id.
当然,它们都有权衡取舍。我想知道这个问题是否有更好的解决方案。请推荐任何你认识的人。
谢谢!
【问题讨论】: