如何建模不同父实体和一个公共子实体之间的关系

时间:2012-08-01 16:09:29

标签: java hibernate database-design modeling

我正在寻找关于建模各种实体及其文档(二进制文件,如PDF,TIFF等)之间关系的最佳实践的一些建议。这些实体是存储在PostgreSQL数据库中的标准JPA / Hibernate。文档本身将存储在MongoDb数据库中。

计划是创建一个子实体来表示文档,其中包含二进制数据的id以根据需要检索它。但这种关系会是什么?

如果我只为每个父实体创建一个文档实体,那么简单的一对多关系就可以了,但这似乎是多余的。

我可以简单地放一个“类型”列来指示文档所属的实体,然后使用命名查询“id =?and type =?”查询文档表。我想这样可行,但有一些事情我也不会为之疯狂 - 只是不能把我的手指放在它上面:)也许这很好。

我看过的另一个选项(尽管我承认我之前从未使用过它,并且需要更多地研究它)是使用连接表中的单向一对多。但是,我认为这不会起作用,因为不能保证不存在重复的父键。我对所有基本关系表主键使用单个序列,这应该保证它,但它仍然听起来不是一个好主意。

最后,我考虑过是否创建了一个实体,然后为每个父实体扩展它,但我认为这将具有相同的缺陷 - 理论上存在非唯一的父ID。

在我做出最终决定之前,我想看看社区可能提供的其他建议。

提前感谢您的想法。

1 个答案:

答案 0 :(得分:0)

  

如果我只为每个父实体创建了一个文档实体,那么简单的一对多关系就可以了,但这似乎是多余的。

我有点困惑。如果您为每个父级创建一个文档,那不是一对一而不是一对多吗?听起来你想要一对多的关系。在这种情况下,您只能为引用它的所有父实体创建单个文档。