2015-05-04 82 views
1

我正在设计层次结构的数据库表,如下图所示。没有递归依赖关系,因此也没有固定的级别。只有Group1的存在阻碍了设计。在层次结构中,只有Item4和Item5的父项为Group1,其余所有项均以System作为其父项。Hibernate复合图案设计

请求反馈意见&意见。

enter image description here

我设计的表如下:

网站表 - SITEID(PK)

系统表 - SYSTEMID(PK),SITEID(FK)

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

Group Table - GroupId(PK),ItemId(FK)

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

这个设计很好吗?或者有什么建议?还要求在Hibernate中提供查询建议。

回答

1

由于ItemGroup都在同一水平上,且被关联到同一System,我会用继承映射他们的关系:

所以,你可以有它由两个ItemGroup扩展的AbstractItem基类,但只有Group也有one-to-many协会到Item

系统多对一关联可以驻留在AbstractItem中。 A JOIN继承模型可能比SINGLE_TABLE更适合您的使用情况。

+0

虽然它可以解决,但我觉得继承层次不合逻辑,因为'Group'不是'Item'类型的,对吧? – ArunDhaJ

+0

这就是为什么我介绍了他们的基类,为了清晰起见,它可以被命名为Component。 –