gpt4 book ai didi

firebase - Firebase 中的多对多关系

转载 作者:行者123 更新时间:2023-12-02 10:47:34 24 4
gpt4 key购买 nike

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

  1. 给定一家公司,他们是当前承包商。
  2. 给定承包商他们为哪些公司工作。

在 Firebase 中构建数据的替代方案有哪些?

最佳答案

self 回答确实是建模的一种方式。这可能是最直接相当于在关系数据库中建模的方式:

  • 承包商
  • 公司
  • companyAndContractorsAssignment(多对多连接器表)

另一种选择是使用 4 个顶级节点:

  • 承包商
  • 公司
  • 公司承包商
  • 承包商公司

最后两个节点如下所示:

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

这种双向结构允许您查找“公司的承包商”和“承包商的公司”,而无需进行查询。这肯定会更快,特别是当您添加承包商和公司时。

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

推荐阅读NoSQL data modeling并查看Firebase for SQL developers 。这个问题也出现在 episode of the #AskFirebase youtube series 中。 .

更新 (2017016)

有人发布了 follow-up question that links here关于从“承包商”和“公司”节点检索实际项目。您需要一次检索这些内容,因为 Firebase 没有与 SELECT * FROM table WHERE id IN (1,2,3) 等效的功能。但此操作并不像您想象的那么慢,因为请求是通过单个连接进行管道传输的。在这里阅读更多相关信息:Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly .

关于firebase - Firebase 中的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com