2017-08-08 17 views
1

最近Firebaseの使用を開始し、AndroidアプリケーションでNoSQLの方法でデータを改造しようとしています。私の現在の構造はMIX ---> MIXTITLE ----> MIXDETAILS(このミックスのすべての詳細)です。多くの構造私はUIDによって注文アイテムを見てきましたが、それをユーザーに関連させて、ユーザーごとに重複したレコードがたくさんあることを避けるにはどうすればいいですか?構造化Firebase DB

たとえば、ユーザーはライブラリに曲を追加することができます。そのライブラリには、プレイリストの場合はオン、お気に入りの場合はオンの3つのタブがあります。 MIXをUIDで保存しても、そのミックスがユーザライブラリに追加されたすべてのMIXESを検索することはできません。

データを非正規化し、User UIDの下のすべてのMIXをリストするUSERMIXノードを作成する方がよいでしょうか?

+0

UIDはユーザーIDを表します。 UIDは、Firebaseが認証されたユーザを内部的に追跡する方法です。つまり、ユーザが作成されると、ユーザにUIDが割り当てられ、そのユーザID /ユーザノードを作成して、各ユーザ/ユーザ/ uid_0および/ users/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/playlist?list = PL1-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

お返事ありがとう!私は実際にこれに続く質問をしました。どのようにしてオブジェクトをこの構造体の中に入れようとするのですか?>すべての曲ではなく、>私はそれを曲にするのが理にかなっていません---> UID ----> songId ---> SongDetails。そうであれば、ソングIDを保持してそのオブジェクトにソングオブジェクトを追加するだけでオブジェクトを作成せずに、これをデータベースに挿入する方法はありますか? –

+0

songIdで曲を保存する方が良い曲にUIDノードを追加すると、曲が重複する可能性があります。より良い構造体はsong-> songid-> songObjectです。 songsRef.child( "" songId ").setValue(SongObject)によってsongObjectを挿入できます。 – uguboz