【发布时间】:2018-03-19 10:27:23
【问题描述】:
如何以多对多关系从 Firebase Cloud Firestore 构造和查询数据?
我有公司和承包商。一个承包商可以为多个公司工作,一个公司可以有多个承包商。这是一个简单的多对多关系。我希望能够回答有关公司和承包商的问题:
给定一家公司,他们是当前的承包商。 给定承包商他们为什么公司工作。 在 Cloud Firestore 中构建数据的正确方法是什么?
【问题讨论】:
-
嗯,它是document-model database,所以我认为你不应该以关系的方式来思考它。无论如何,我认为你可以只为给定的公司收集一组承包商,反之亦然(所以是的,你会有某种“重复”)。我不认为您可以像在关系数据库中那样拥有“规范化”模型。
-
我看到了几种方法。公司可以包含承包商的子集合,或者反过来,承包商可以包含公司的子集合。这意味着一些承包商或公司是重复的。也许改用空文档并使用 id 在其他集合中查找。什么是最好的取决于您的典型查询。尝试一下并根据您的需要调整数据库。
-
或者反过来你尝试创建一个新的集合来存储承包商和公司之间的关系,因为如果我们查询主集合的子集合,我们不会得到相关的子集合的数据.
-
Firestore 文档说:“作为 NoSQL 数据库,它在描述数据对象之间关系的方式上与它们不同。” cloud.google.com/firestore/docs。这是什么意思?
标签: firebase google-cloud-firestore