我正在编写一个web应用程序,无法弄清以下两种方法中的哪一种应该采取。 想象5个表:A,B,C,d,和E.
选项1: 使用ID作为外键,然后它看起来像这样:
表A:ID,FIELD1,FIELD2,。 ..
tableB的:tableA_id,字段1,字段2,...
表C:tableB_id,字段1,字段2,...等...
选项2: 创建新列将作为外键,然后它看起来像这样:
表A:ID,字段1,字段2,...
tableB的:ID,tableA_id,字段1,字段2,...
表C:ID,tableB_id,字段1,字段2,...等...
我认为,当我们调用tableB的ID字段被命名为逸岸,但tableA_id我可能是错了,所以选择1可能会有点混乱如果有人启发我,我会很高兴。
另外,如果选项2是要走的路,在主键上连接表有什么意义?
编辑:我想实现是这样的:
帐户
......性格
......项目
......消息
... ...其他的东西带OneToOne注释的数据库结构
0
A
回答
0
我结束了创建新列的外键(选项2 )只是因为它不那么令人困惑。
感谢您的建议,但我很感激。
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
.
.
.
+0
这是一个有趣的解决方案,但在Spring数据中,我不会手动执行任何SQL,而只需要调用存储库适当的函数和hibernate为我做这个,所以我必须一直调用TableX。我也更新了我试图达到的目标。 – Sikor 2014-10-30 22:56:21
相关问题
- 1. 关注者的MySQL数据库结构
- 2. 备注数据库到MySQL(带CF?)/或如何获得NSF数据结构
- 3. 带注释的Spring MVC数据库连接
- 4. 从数据库模式生成带注释的doctrine2 entite
- 5. 带架构注释的Doctrine ORM表
- 6. @OneToOne关系是否包含@ForiegnKey注释
- 7. JPA,瞬态注释不会覆盖OneToOne?
- 8. 为*未通过RoundTripLoader加载的数据结构生成注释?
- 9. 数据库结构
- 10. 数据库结构
- 11. 注入带注释的方法参数
- 12. Enum.Parse带注释
- 13. 带注释的MuleEventContext
- 14. CMS的数据库结构
- 15. 数据库结构关系数据库
- 16. 使用注释器js在mysql数据库中存储注释(注释)
- 17. JAXB类层次结构的注释
- 18. 结构成员的快速注释
- 19. 新的SVN仓库结构和移植注释
- 20. Java注释处理器,带注释的注释类型
- 21. 在数据库结构与节点的树状数据结构
- 22. 树数据结构的数据库结构
- 23. 场与@Transient注释数据库
- 24. 休眠注释与几个数据库
- 25. 类库,MVC和数据注释
- 26. Spring数据存储库无需注释
- 27. 带有scanf的动态数据结构
- 28. 从属性构造函数中检索带注释的方法
- 29. 带TortoiseSVN的版本控制数据库脚本结构
- 30. 从旧的数据库结构导出到新的数据库结构
你想模拟一棵树吗? – Leo 2014-10-30 22:14:43
我不这么认为。我只是想弄清楚哪种方式是正确的。在我的情况下,有帐户表,其中只包含1个字符,例如项目表,消息等等。 – Sikor 2014-10-30 22:20:07