我正在为层次结构设计数据库表,如下图所示。没有递归依赖,因此没有固定的级别。只有Group1的存在才会妨碍设计。在层次结构中,只有Item4和Item5将父项作为Group1,其余所有项目都将System作为其父项。
请求您的反馈&建议。
我按如下方式设计了表格:
网站表 - SiteId(PK)
系统表 - SystemId(PK),SiteId(FK)
项目表 - ItemId(PK),SystemId(FK)
组表 - GroupId(PK),ItemId(FK)
在上面的设计中,我打算使用传递属性来识别属于Group1的Item4和Item5。
这个设计好吗?或者有什么建议吗?还请求Hibernate中的查询建议。
答案 0 :(得分:1)
由于Item
和Group
位于同一级别且与同一System
相关联,我会使用继承来映射他们的关系:
因此,您可以拥有AbstractItem
基类,该基类由Item
和Group
扩展,但只有Group
与one-to-many
关联Item
。
系统多对一关联可以驻留在AbstractItem
中。对于您的用例,JOIN
继承模型可能比SINGLE_TABLE
更好。