首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在NoSQL Firebase数据库中对数据建模?

如何在NoSQL Firebase数据库中对数据建模?
EN

Stack Overflow用户
提问于 2020-02-10 12:41:21
回答 1查看 59关注 0票数 0

我想存储以下数据:

用户、活动、与会者

(类似于这里给出的Firebase示例:)

我的Firebase商店如下所示:

用户-收集

代码语言:javascript
运行
复制
    {
       "9582940055" : 
                       {
                         "name" : "test"
                       }
    }

每个用户都是不同的文档。我做得对吗?

如果是,我将每个用户的移动号码保留为Document Id而不是auto id,因为移动号码将是唯一的,这将有助于我查询。是这样的吗?

活动-收集

代码语言:javascript
运行
复制
    {
       "MkyzuARd8Uelh0qD1WMa" : // auto id for every event
                       {
                         "name" : "test",                           
                         "attendees" : {
                                      "user": 'Lakshay'
                                       }
                       }
    }

在这里,我将与会者作为Map保存在事件文档中。它是正确的,还是应该让与会者成为事件文档中的集合?

而且,"user": 'Lakshay'"attendees"中只是一个字符串。是否建议使用reference数据类型的Firebase?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-10 15:37:08

每个用户都是不同的文档。我做得对吗?

是的,这很常见。最初,拥有这么少数据的文档似乎有点奇怪,但随着时间的推移,您会习惯它(并且可能会向每个用户添加更多的数据)。

我将每个用户的手机号码作为文档id,而不是自动Id,因为移动号码将是唯一的,这将有助于我查询。是这样的吗?

如果应用程序上下文中的每个用户的数字是唯一的,那么它可以使用来标识用户,因此也可以作为用户配置文件的ID。为此目的使用用户的UID略显惯用,因为这是查找用户的最常见的方式。但是,如果您使用该的电话号码--它们对每个用户都是唯一的--您也可以使用它。

在这里,我将与会者作为一个地图保存在事件文档中。它是正确的,还是应该让与会者成为事件文档中的集合?

那取决于..。

将用户事件存储在单个文档中的

  • 意味着可以为用户存储多少事件,因为文档不能大于1MB。将事件存储在文档中的用户的
  • 意味着您始终读取用户事件的数据,即使您可能只需要该用户的名称。因此,您将读取比需要更多的数据,浪费您和您的users.
  • Storing的带宽--子集合中的事件允许您查询它们,并读取用户事件的子集。另一方面,
  • :使用子集合意味着您最终会读取更小的文档。因此,您将支付从子集合中读取更多文档的费用,同时为带宽支付更低的费用。

中的“用户”:“Lakshay”中的“与会者”只是一个字符串。是否建议使用参考数据类型的Firebase?

这几乎没有什么区别,因为Firestore的DocumentReference字段类型提供的额外功能并不多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60150665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档