【发布时间】:2019-06-06 21:55:49
【问题描述】:
我需要在 Firestore 上建模多对多关系。以下是要求的摘要。
-
一家公司可以为一个项目雇佣多个承包商。一个承包商可以在不同的时间为许多公司从事不同的项目。
-
不应限制承包商或公司的数量,即应使用集合或子集合。
-
承包商应该能够被公司查询;反之亦然,公司应该能够通过承包商进行查询。例如,(1)承包商可能会要求按项目和时间排序的他/她工作的公司列表,以及(2)公司可以要求按项目和承包商排序的一个月内为他们工作的所有承包商,并且可能按周划分。
-
就公司而言,承包商可以更改状态,例如工作,完成。公司在项目生命周期内更改承包商的状态。此状态可用于查询。
-
显然,承包商不应访问其他承包商的信息。
-
移动应用上只有一个用户代表一家公司。同样,承包商在移动应用上仅由一个用户代表。
-
该移动应用是在 React Native 中构建的,(据我所知)Firestore 将其视为网络应用。
我正在考虑为每个公司/在每个公司下使用文件的子集合。 每个文档代表一个项目。所有承包商的姓名、状态以及开始和结束时间都存储在此文档中。
同时,每个承包商都有重复的项目文件子集。 这些重复文档中的每一个都代表项目文档的部分副本(上图)。该副本文件存储了公司名称以及项目的开始和结束时间。
一个。每当建立关系时,例如签订了合同,两个文件都是批量创建的。
b.状态仅存在于文档的第 1 份副本中。
c。如果对几乎静态的数据进行任何罕见的更改,例如。姓名,电话,两个文件都更新了。
这个设计有意义吗? 有任何顾虑、建议、更好的想法吗? 如果你同意这个设计,我很想听听你的意见,也许你可以在评论中写一些听起来不错的东西。
AskFirebase
【问题讨论】:
标签: google-cloud-firestore many-to-many