我有一个Firebase数据库。我有公司和承包商。一个承包商可以为多个公司工作,而一个公司可以有多个承包商。这是直接的多对多关系。我希望能够回答有关公司和承包商的问题:
给定一家公司,他们是当前的承包商。 给承包商一个他们要工作的公司。 在Firebase中构造数据的替代方法有哪些?
自我回答确实是对此进行建模的一种方法。它可能是在关系数据库中建模的最直接等效方法:
承办商 公司 companyAndContractorsAssignment(多对多连接器表) 一种替代方法是使用4个顶级节点:
承办商 公司 公司承包商 承包商公司 最后两个节点如下所示:
companyContractors companyKey1 contractorKey1: true contractorKey3: true companyKey2 contractorKey2: true contractorCompanies contractorKey1 companyKey1: true contractorKey2 companyKey2: true contractorKey3 companyKey1: true
这种双向结构使您既可以查找“公司承包商”又可以“公司承包商”,而无需查询。这势必会更快,尤其是在您添加承包商和公司时。
这对于您的应用程序是否必要,取决于您需要的用例,您期望的数据大小等等。