2016-04-25 60 views
0

冒着被重複標記的風險,這裏就出現了。Firebase數據建模指南

我有物品和標籤。項目可以有多個標籤,每個標籤可以是另一個標籤的子標籤。

我想列出標籤作爲一棵樹,並在每個標籤內的項目。

實質上,標籤是項目的文件夾,除了項目可以位於多個位置。

這是正確的方法嗎?

/items/ 

i123 : { 
    Label : "i am an item", 
    Tags : { tagid: t234} 
} 

/tags/ 

t234 : { 
    Label : "i am a Tag", 
    Parent: {tagid: t567} 
} 

我是個有點不確定,我做這個權利。我確實讀過了當然在firebase上的傷心文檔和教程,我也看過其他類似的問題。

我被困在RDBMS-思想中,似乎無法溝通nosql的概念,這就是爲什麼我希望在這裏得到一些指導這裏的用例。

謝謝。

根據評論者的請求,更多關於用例的信息。

我想顯示的標籤一棵樹,這樣

I am tag One 
I am second tag 
    this is a child tag 
     here is a child's child tag 
    another child tag 
I am a root level tag again 
// etc... you get the idea 

也有項目,項目可以在多個標籤。這裏的顯示與文件瀏覽器完全相同,真的。除此之外,項目可以位於多個位置,即它們可以具有多個關聯的標籤。

像這個例子中,在item 334坐落在多個地方:

tag 1 
item 209 
tag 2 
    tag 21 
    item 11 
    item 334 
tag 3 
item 334 
item 586 

現在,我想我可以只保存在一個JSON對象了整個事情,並根據需要進行更新,但我有興趣可以通過標籤以及物品標籤進行搜索。因此,在我微弱的新手頭腦中,我想我應該可以擁有一個可以遍歷的URL /tags/以獲得與標籤匹配的項目。同上/items/所以我可以在標籤上做一個關鍵字匹配。

SO上的其他答案描述了爲事物創建索引的方法,這就是爲什麼我將標記引用存儲在項目對象中的原因。我正在努力解決這個問題。

我越想越想,我更傾向於將所有東西都存儲在一個大的嵌套對象中,但我認爲這應該不是一個好主意。而且,如果我這樣做了,我特別不喜歡讓物品多次存儲的想法。

生活RDB的世界是比較容易的,因爲我知道我在做什麼:P

+0

建模數據的正確方法取決於應用程序如何使用該數據。我們無法爲您解答,儘管如果您有這個問題,我們可以爲您提供具體的查詢服務。除此之外,我建議閱讀本文[NoSQL數據建模](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。 –

+0

感謝您的鏈接。我認爲我在描述如何使用數據時非常清楚 – tim

回答

2

這種結構符合你的問題的標準,但有真正的問題不是信息把一個堅實的答案在一起。

items 
item_00 
    tag_00 
    tag_01 
    tag_02 
item_01 
    tag_02 
item_02 
    tag_01 

tags 
tag_00 
    parent: false 
    child: tag_01 
tag_01 
    parent: tag_00 
    child: false 
tag_02 
    parent: false 
    child: false 

在這個例子中,

  • 項目可以有很多的標籤
  • 每個標籤可以是另一個標籤的孩子(和家長:孩子的關係被跟蹤)
  • 的標籤列爲樹
  • 每個標籤內的物品可以通過查詢標籤的物品找到

用更多數據更新問題,我(我們)可以細化答案)

+0

感謝您花時間回答這個問題。我將不得不考慮如何最好地問。不想用不必要的細節來污染問題。 – tim