如何创建数据结构?

时间:2016-09-17 07:18:17

标签: firebase firebase-realtime-database nosql

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

作者

  • AUTHOR_ID
  • AUTHOR_NAME

  • book_id
  • BOOK_NAME
  • AUTHOR_ID

销售

  • sales_id
  • sales_date
  • AUTHOR_ID
  • book_id

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

例如,最后一本书很容易为该节目销售。

  • BOOK_NAME
  • AUTHOR_NAME
  • sales_date

提前感谢您的帮助,祝您今天愉快。

1 个答案:

答案 0 :(得分: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次销售(按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"