【问题标题】:Firebase/NoSQL Database StructureFirebase/NoSQL 数据库结构
【发布时间】:2016-12-09 14:32:49
【问题描述】:

我第一次尝试构建一个 nosql 数据库。我有一个用户表,其中包含:姓名和电子邮件地址。现在每个用户可以拥有多个设备。

每个设备都有多个基本上都有一个读数数组。

这是我目前的结构:

如何改进这种结构?

ps:我正在使用 angularjs 和 angularfire。

【问题讨论】:

    标签: json firebase data-structures firebase-realtime-database nosql


    【解决方案1】:

    在关系数据库中,有范式的概念,因此与数据模型是否被规范化的某种客观的度量有关。

    在 NoSQL 数据库中,您通常会根据应用使用数据的方式对数据进行建模。因此,在不考虑应用程序的用例的情况下,几乎没有关于什么是好的数据模型的概念。

    也就是说:Firebase documentation recommends flattening your data。更具体地说,它建议不要混合类型的数据,就像您对用户元数据和设备元数据所做的那样。

    建议将它们分成两个顶级节点:

    /users
      <userid1>
       email:
       id:
       name:
      <userid2>
       email:
       id:
       name:
    /devices
      <userid>
        <deviceid1>
          <measurement1>
          <measurement2>
        <deviceid2>
          <measurement1>
          <measurement2>
    

    进一步推荐阅读NoSQL data modeling 并查看我们的Firebase for SQL developers。哦,当然还有Firebase documentation on structuring data

    【讨论】:

    • 嘿@Frank van Puffelen,非常感谢您的回复。所以在设备下我会把设备ID也正确吗?
    • 是的。我在你的 JSON 中忽略了这一点,所以用额外的层更新了我的答案。顺便说一句,对于下一个问题:请将 JSON 作为文本发布(您可以轻松地从 Firebase 控制台导出它)。这使我可以在答案中重复使用它(还有许多其他好处)。
    • 我想查询当前登录用户使用的最后一个设备的数据库,我该怎么做?我必须先查询用户,然后再用设备检查吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多