【问题标题】:Flutter Firebase: NoSQL data modelling subcollections referenceFlutter Firebase:NoSQL 数据建模子集合参考
【发布时间】:2020-10-19 16:54:55
【问题描述】:

这里是新手。 我需要有关以结构化方式引用 Firebase 子集合的帮助,用户可以通过子集合选择和传递信息。

=> Tournaments => Cities => Cairo => Year => High Goal => Team A

从根本上来说就是这样我有一个城市列表,比如说

 1. Cairo 
 2. Alexandria
 3. Sixth October

我想根据年份记录这些城市每年举办的锦标赛。比方说 一个。

 1. 2019    
 2. 2018
 3. 2017

假设每年有 3 个不同的比赛杯

 1. High goal   
 2. Medium goal
 3. Low goal

每个参赛杯赛都有参加比赛的球队

 1. Team A  
 2. Team B
 3. Team C

我添加了在 adobe XD 中设计的应用程序的可视化表示。

【问题讨论】:

  • 你到底想做什么?
  • 您好,我有四个不同的页面,我希望每个页面都包含基于用户输入的文档。基于问题提供的结构。用户应该能够选择一个选项,例如 Cairo => 它会将用户带到另一个页面,用户将在其中选择(从子集合中)查看哪一年。在用户选择年份(比如说 2019 年)后,将显示另一个页面,其中包含不同杯子的子集合列表(即高目标、低目标,..),然后用户可以再次选择一个选项,将他带到团队名单和选择。希望这一切都有意义。
  • 我有一个可能意图的 Adob​​e XD 设计,但我还不能在 SO 上添加图片

标签: firebase flutter provider materialpageroute


【解决方案1】:

NoSQL 数据库的数据建模既取决于您存储的数据,也取决于您应用的用例。因此,没有“完美”的数据模型,NoSQL 数据库的最佳实践(或标准形式)也几乎没有关系数据模型那么多。

Firestore(您似乎希望使用它)提供了一些用于建模数据的工具:

  • 离散的存储单元称为文档。每个文档都包含各种类型的字段,包括嵌套字段,一个文档的大小最大为 1MB。
  • 文档存储在命名集合中。
  • 您可以在文档下嵌套集合,并以此方式构建层次结构。
  • 每个文档都有一个唯一的路径,格式为 /collection1/docid1/collection2/doc2 等。
  • 要写入文档,您必须知道其确切路径。
  • 您可以在集合中查询其中的文档子集。
  • 您可以查询具有相同名称的所有集合,无论它们在数据库中的路径如何。
  • 查询的性能仅取决于您检索的文档数量,而不是集合中的文档数量。

可能还有很多规则,但这些应该足以让您入门。

我通常建议您列出 3-5 个最常用的用例,并确定您需要哪些读取/查询。有了这些查询,您就可以开始定义您的数据模型,并实现您的应用程序代码。

然后,每次添加用例时,您都会弄清楚如何读取/写入该用例的数据,并可能更改/扩展数据模型以允许新的和现有的用例。如果您在添加特定用例时遇到困难,请在此处报告,我们可以尝试提供帮助。

一些不错的入门材料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2021-07-10
    • 2020-06-08
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多