连接多个表的数据库设计最佳实践

时间:2016-09-07 01:47:03

标签: mysql sql database database-design

抱歉,如果之前已经问过这个问题,但我不知道如何以谷歌能够理解的方式来表达这个问题。

基本上,例如,如果你有3个表:

表A

表B1

表B2

并且所有3个表中的数据以2种方式之一连接:

表A&表B1

OR

表A&表B2

在表格中连接它们是最佳做法,为什么?

1表如:

加入表

    |Table A  |Table B1  |Table B2  |
    |tableA_ID|tableB1_ID|null      |
    |tableA_ID|null      |tableB2_ID|

或每个联接有2个单独的表

表A和B1加入

表A和B2加入

还是有另一种更好的方法吗?

3 个答案:

答案 0 :(得分:1)

连接表取决于表之间的字段和关系。 它还取决于您正在寻找的输出 - 基于此,您将需要加入表

答案 1 :(得分:0)

我认为你想要一个left join,其实两个:

select a.tableA_ID, b1.tableB1_ID, b2.tableB2_ID
from a left join
     b1
     on a.tableA_ID = b1.tableA_ID left join
     b2
     on a.tableA_ID = b2.tableA_ID ;

答案 2 :(得分:0)

您有点不清楚自己要做什么,但考虑到您的预期结果,union all可能会有效:

select a.tableA_ID, 
       b.tableB1_ID as TableB1, 
       null as TableB2
from a join b on a.tableA_ID = b.tableA_ID
union all
select a.tableA_ID, 
       null,
       b2.tableB2_ID
from a join b2 on a.tableA_ID = b2.tableA_ID