我正在编写一个webapp,但无法弄清楚我应该采取以下哪两种方法。
想象一下5个表:A,B,C,D和E.
选项1:
使用id作为外键然后它看起来像这样:
tableA: id ,field1,field2,...
tableB: tableA_id ,field1,field2,...
tableC: tableB_id ,field1,field2,...... etc ...
选项2:
创建将用作外键的新列,然后它看起来像这样:
tableA: id ,field1,field2,...
tableB: id , tableA_id ,field1,field2,...
tableC: id , tableB_id ,field1,field2,... etc ...
我认为当我们调用tableB id字段时,选项1可能有点令人困惑,这个字段实际上名为tableA_id,但我可能错了所以如果有人启发我,我会很高兴。
另外,如果选项2是要走的路,那么在主键上连接表的重点是什么?
编辑:我想要实现的是这样的:
账户
...字符
......项目
......消息
......其他的东西
答案 0 :(得分:0)
我猜“选项2”,尽管您可能需要更加具体地了解您的目标。我建议选择3:
TableX: id, A_id, B_id, C_id, D_id, E_id
然后:
Table_A: id, col1, col2
Table_B: id, colX, colY
Table_C: id, thing1
Table_D: id, more_col
Table_E: id, xxx
然后,这只是一个简单的连接:
SELECT A.col1, B.colX, C.thing1, D.more_col, E.xxx
FROM TableX X
LEFT JOIN Table_A as A on X.A_id = A.id
LEFT JOIN Table_B as B on X.B_id = B.id
.
.
.
答案 1 :(得分:0)
我最终创建了新列作为外键(选项2),因为它不那么令人困惑 谢谢你的建议,我很感激。