Percy

Firebase中的多对多关系

java

我有一个Firebase数据库。我有公司和承包商。一个承包商可以为多个公司工作,而一个公司可以有多个承包商。这是直接的多对多关系。我希望能够回答有关公司和承包商的问题:

给定一家公司,他们是当前的承包商。
给承包商一个他们要工作的公司。
在Firebase中构造数据的替代方法有哪些?


阅读 288

收藏
2020-12-02

共1个答案

小编典典

自我回答确实是对此进行建模的一种方法。它可能是在关系数据库中建模的最直接等效方法:

承办商
公司
companyAndContractorsAssignment(多对多连接器表)
一种替代方法是使用4个顶级节点:

承办商
公司
公司承包商
承包商公司
最后两个节点如下所示:

companyContractors
    companyKey1
        contractorKey1: true
        contractorKey3: true
    companyKey2
        contractorKey2: true
contractorCompanies
    contractorKey1
        companyKey1: true
    contractorKey2
        companyKey2: true
    contractorKey3
        companyKey1: true

这种双向结构使您既可以查找“公司承包商”又可以“公司承包商”,而无需查询。这势必会更快,尤其是在您添加承包商和公司时。

这对于您的应用程序是否必要,取决于您需要的用例,您期望的数据大小等等。

2020-12-02