【问题标题】:How do I create a data structure?如何创建数据结构?
【发布时间】:2017-01-25 10:07:29
【问题描述】:
我正在准备Firebase 申请。此应用程序将是关系数据。您要单独保存的作者信息、书籍信息和销售信息。记录结构如下。
作者
书籍
销售额
- 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"