【问题标题】:How do I create a data structure?如何创建数据结构?
【发布时间】:2017-01-25 10:07:29
【问题描述】:

我正在准备Firebase 申请。此应用程序将是关系数据。您要单独保存的作者信息、书籍信息和销售信息。记录结构如下。

作者

  • author_id
  • 作者姓名

书籍

  • book_id
  • 书名
  • author_id

销售额

  • sales_id
  • 销售日期
  • 价格
  • author_id
  • book_id

如何创建数据结构以使用子值获取所需信息。

例如,最后一本书很容易为节目卖掉。

  • 书名
  • 作者姓名
  • 销售日期

提前感谢您的帮助,祝您有美好的一天。

【问题讨论】:

  • 您可以阅读this blog 了解更多关于在像 firebase 这样的 NOSQL 数据库中结构化数据的信息。

标签: firebase firebase-realtime-database nosql


【解决方案1】:

Firebase 没有表或架构(如在 SQL 中)并且不是关系型的,因此您需要以某种方式构建数据以获取您想要检索的数据。

注意所有节点键(以 Y 开头)都是用 childByAutoId 创建的。

authors
  -Y89j809ja
    author: "Heinlein"
  -Yi9jasas0
    author: "Clarke"
  -Yojoos0sd
    author: "Bradbury"
books
  -Ykkao90sj
    book_name: "Starship Troopers"
    author_id: "-Y89j809ja"
  -Yom9sjwppp
    book_name: "2001: A Space Odyssey"
    author_id: "-Ji9jasas0"
  -Yowk90dj9s
    book_name: "The Martian Chronicles"
    author_id: "-Yojoos0sd"
sales
  -Yijajisijd
    sales_timestamp: "20160916130510"
    book_id: "-Ykkao90sj"
  -Yioj900wwo
    sales_timestamp: "20160917084722"
    book_id: "-Yojoos0sd"

使用此结构,您可以查询最近 3 次销售的销售节点(queryLimitedToLast by sales_timestamp)。这将返回通过 book_id 检索书籍所需的数据,然后通过 author_id 返回作者。

还有 100 种其他方式来构建数据,但这是最“相关”的方式

需要一次查询才能从销售节点 (.Value) 获取销售额,然后遍历这些结果以查询图书和作者。您可以嵌套这些查询,这样它们就不会违背 Firebase 的异步特性。

另一种选择是扁平化您的数据,并仅将每个事务与所有需要的数据一起存储。

sales
  -Yijajisijd
    sales_timestamp: "20160916130510"
    book_name: "Starship Troopers"
    author: "Heinlein"
    price: "$19.95"
  -Yikiasomn
    sales_timestamp: "20160917084722"
    book_name: "2001: A Space Odyssey"
    author: "Clarke"
    price: "$14.95"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多