繁体   English   中英

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

[英]database design best practice connecting multiple tables

抱歉,如果以前曾有人问过这个问题,但是我不知道该如何用Google能够理解的方式来表达它。

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

表A

表B1

表B2

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

表A和表B1

要么

表A和表B2

哪种最佳做法是将它们连接到表中,为什么?

1个表,例如:

联接表

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

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

表A和B1已加入

表A和B2已加入

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

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

我认为您实际上想要一个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 ;

尚不清楚您要做什么,但是鉴于您的预期结果, 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM