2016-09-17 85 views
-4

我正在準備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

您可以閱讀[這個博客(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)瞭解更多關於在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個銷售(sales_timestamp爲queryLimitedToLast)。這將返回檢索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"