2017-08-08 69 views
1

我最近開始使用firebase,並試圖在我的Android應用程序中以NoSql方式對數據進行重新編碼。我目前的結構是MIX ---> MIXTITLE ----> MIXDETAILS(這個組合的所有細節)。很多結構我都看過UID的訂單項目,但是我怎樣才能將它與用戶聯繫起來,並避免每個用戶有一堆重複的記錄?構建Firebase DB

例如,用戶可以將歌曲添加到庫中,該庫有三個選項卡,一個用於所有歌曲,一個用於播放列表,一個用於收藏夾。通過UID存儲MIX不會讓我查詢所有混音已添加到用戶庫的所有混音。

更好的方法是將數據非規格化並創建一個列出用戶UID下的所有MIX的USERMIX節點?

+0

UID代表用戶ID。 UID是Firebase在內部跟蹤經過身份驗證的用戶的方式,即在創建用戶時,會爲其分配一個UID,然後可以使用該UID創建您自己的/用戶節點,您可以在其中存儲有關每個用戶/用戶/ uid_0和/ /用戶的其他信息/ uid_1等。如果你想創建唯一的鍵來存儲其他類型的數據,通常通過childByAutoId()(swift)或push()來完成。如果您的問題中沒有關於您的用例和平臺的更多信息,我們無法提供更多信息, – Jay

+0

Firebase中的建模數據是一個非常廣泛的主題。最好的模型是適用於你的用例的那個模型。這是非建議,但實際上非常重要:在NoSQL中,您最終會爲應用程序的用例增加數據模型。我推薦閱讀[NoSQL數據建模](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)並觀看[Firebase for SQL開發人員](https://www.youtube的.com /播放列表?列表= PLL-K7zZEsYLlP-K-RKFa7RyNPa9_wCH2s)。 –

回答

1

據我所知,它可能是這樣的例子。

allSongs 
- sid1 
- sid2 
.. 
users 
- uid1 
- uid2 
.. 
favorites 
-uid1 
--sid1:true 
--sid5:true 
.. 
playlists 
-uid1 
--sid2:true 
--sid7:true 
--sid12:true 
.. 
+0

嘿謝謝你的回答!我其實有一個跟進問題。我將如何在這個結構中嵌套對象而不是所有歌曲 - > songId將它變成歌曲---> UID ----> songId ---> SongDetails是沒有意義的。如果是這樣,我怎麼會插入到數據庫中,而不創建一個對象只是爲了保存歌曲ID並添加歌曲對象到該對象? –

+0

更好地存儲只有songId的歌曲。向歌曲添加uid節點可能會導致歌曲重複。更好的結構是歌曲 - >歌曲 - >歌曲對象。您可以通過songsRef.child(「」songId「)。setValue(SongObject)插入songObject。 – uguboz