2012-08-01 64 views
2

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

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

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

我可以简单地放一个表示文档属于哪个实体的“type”列,然后用一个名为“id =?and type =?”的查询来查询文档表。我想这会工作,但有一些关于我对任何一个都不是疯狂的 - 只是不能把我的手指放在它:)也许这很好。

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

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

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

在此先感谢您的想法。

+0

你找到答案了吗?我也有同样的问题。 – ps0604 2015-01-19 17:47:39

回答

0

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

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

+0

对不起,如果我不清楚。每个母公司与其文件有一对多的关系。例如,商家可能拥有一套文件,如应用程序和合同。然后,每个客户也将拥有各种文件,如申请表,信用报告等。但是,如果我有12个父实体,那么我将不得不为这些文档定义12个子实体。这就是我想要避免的。我正在寻找一种很好的方法来定义一个我可以用于所有父实体的文档实体。那有意义吗? – 2012-08-02 13:50:15

相关问题