Hibernate复合图案设计

时间:2015-05-04 07:19:00

标签: java mysql sql database hibernate

我正在为层次结构设计数据库表,如下图所示。没有递归依赖,因此没有固定的级别。只有Group1的存在才会妨碍设计。在层次结构中,只有Item4和Item5将父项作为Group1,其余所有项目都将System作为其父项。

请求您的反馈&建议。

enter image description here

我按如下方式设计了表格:

网站表 - SiteId(PK)

系统表 - SystemId(PK),SiteId(FK)

项目表 - ItemId(PK),SystemId(FK)

组表 - GroupId(PK),ItemId(FK)

在上面的设计中,我打算使用传递属性来识别属于Group1的Item4和Item5。

这个设计好吗?或者有什么建议吗?还请求Hibernate中的查询建议。

1 个答案:

答案 0 :(得分:1)

由于ItemGroup位于同一级别且与同一System相关联,我会使用继承来映射他们的关系:

因此,您可以拥有AbstractItem基类,该基类由ItemGroup扩展,但只有Groupone-to-many关联Item

系统多对一关联可以驻留在AbstractItem中。对于您的用例,JOIN继承模型可能比SINGLE_TABLE更好。

相关问题