使用OneToOne注释的数据库结构

时间:2014-10-30 21:53:55

标签: mysql database database-design relational-database

我正在编写一个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是要走的路,那么在主键上连接表的重点是什么?

编辑:我想要实现的是这样的:
账户
...字符
......项目
......消息
......其他的东西

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),因为它不那么令人困惑 谢谢你的建议,我很感激。