多个外键有意义吗?

kim*_*kim 3 mysql sql database-design foreign-keys

一个表有多个外键是否有意义?

假设我有三个表Table A,Table BTable C.如果我将表视为对象(并且它们映射到我的代码中的对象),那么表A和表B都与表CIe具有多对一关系表/对象A和B可以各自具有C的许多实例.所以我设计的方式是Table C分在两个主键Table ATable B:换句话说,Table C有2个外键(A_ID和B_ID).

编辑:我忘了也提到Table A可以有很多实例Table B.所以Table B在表A中有一个外键.如果这有所不同......

我想知道这是否有意义还是有更好的方法来做到这一点?谢谢.

Mar*_*ers 6

这很好,但请注意,只有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.