一个表有多个外键有意义吗?
假设我有三个表,表 A
、表 B
和 表 C
。如果我将表视为对象(并且它们被映射到我的代码中的对象),那么表 A 和 B 都与表 C 具有多对一关系。即表/对象 A 和 B 都可以有很多 C 的实例。所以我的设计方式是 Table C
指向 Table A
和 中的主键>表 B
:换句话说,表 C
有 2 个外键(a_Id 和 b_Id)。
编辑:我还忘了提到 Table A
可以有许多 Table B
的实例。所以 Table B
在 Table A 中有一个外键。如果这会有所不同...
我想知道这是否有意义,或者有更好的方法吗?谢谢。
最佳答案
这很好,但请注意,只有当 C 始终必须同时具有 A 和 B 作为一对时才有意义。
如果您只想让 A 拥有 C,而 B 拥有 C,但 A 和 B 在其他方面不相关,那么您应该将外键放入 A 和 B 中,并允许其为空。
更新:经过澄清后,您似乎想要两个独立的关系:一个 A 可以有多个 C,一个 B 可以有多个 C,但是一个 C 只能属于一个 A 或一个 B。
解决办法:是两个独立的一对多关系,所以新建两张表A_C和B_C,把外键放在那里。 A_C 包含 A 的外键和 C 的外键。对于 B_C 也是如此。
关于sql - 多个外键有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2239889/