【问题标题】:Specific Denormalization techniques for a data set数据集的特定反规范化技术
【发布时间】:2018-09-04 19:23:15
【问题描述】:

我正在做一个学校项目,为了获得额外的学分,我们可以在我们的 Android 应用中添加一个数据库。我使用 Firebase 是因为我听说过很多,所以我想学习如何使用它!

我一直在阅读有关如何在其中组织数据的信息,我对我的具体用例有一些疑问,希望能找到一些建议。

对于我们的项目,我们需要一个位置列表,每个位置都有与之相关的属性(地址、名称、他们的工作等),以及这些位置的用户列表。我目前将位置作为我的“类别”之一。我不知道这个合适的词,我的意思是在我的 json 文件中它看起来像这样:

{ "Locations": { "location_1": {...}, "location_2": {...} ...} }

此外,我的 json 文件中还有用户作为另一个类别。

我想知道跟踪某个位置的用户的最佳方法是什么?我想把另一个属性放在一个叫做“居住者”之类的地方,但我不知道这是否是嵌套数据太深。

【问题讨论】:

  • 如果您只需要让用户处于特定位置,那么您的方法很好。另一方面,如果您想查询以下内容:用户所在的所有位置,则必须进一步非规范化。请告诉我,在这种情况下,我很乐意提供更详细的答案。
  • @RenaudTarnec 我必须同时获取用户所在的位置以及某个位置的所有用户。在那种情况下,我会让用户持有一个位置参数,然后将值设为“location_id:true”吗?

标签: json firebase firebase-realtime-database nosql denormalization


【解决方案1】:

当您解释说“必须同时获取用户所在的位置和某个位置的所有用户”时,根据您的上述评论,您必须创建两个数据结构:

一个用于存储当前用户位置的用户:

- Users
  - User_A
    - Location: Location_1
  - User_B
    - Location: Location_2

一个用于位置,当您列出每个位置时,该位置的用户列表。

- Location_1
  - "Users": {
    "alovelace": true,
    "ghopper": true,
    "eclarke": true
  }

使用 NoSQL 数据库,您应该毫不犹豫地复制数据,这样您的查询就可以轻松快速地执行。

我建议您看一下最近的 Firebase 视频,其中很好地解释了这种方法(视频是关于 Firestore,但请看前 9 分钟):https://www.youtube.com/watch?v=v_hR4K4auoQ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多