Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 构建Firebase数据库_Android_Json_Firebase_Firebase Realtime Database_Nosql - Fatal编程技术网

Android 构建Firebase数据库

Android 构建Firebase数据库,android,json,firebase,firebase-realtime-database,nosql,Android,Json,Firebase,Firebase Realtime Database,Nosql,我最近开始使用firebase,并试图在我的Android应用程序中以NoSql方式重新构建我的数据。我当前的结构是MIX-->mixttitle-->mixtails(此混合的所有细节)。我见过很多按UID排序项目的结构,但是如何将其与用户关联,并避免每个用户都有一堆重复的记录 例如,用户可以将歌曲添加到库中,该库有三个选项卡,一个用于所有歌曲,一个用于播放列表,另一个用于收藏夹。通过UID存储混合不会让我查询到已将该混合添加到用户库中的所有混合 更好的方法是对数据进行非规范化,并创建一个US

我最近开始使用firebase,并试图在我的Android应用程序中以NoSql方式重新构建我的数据。我当前的结构是MIX-->mixttitle-->mixtails(此混合的所有细节)。我见过很多按UID排序项目的结构,但是如何将其与用户关联,并避免每个用户都有一堆重复的记录

例如,用户可以将歌曲添加到库中,该库有三个选项卡,一个用于所有歌曲,一个用于播放列表,另一个用于收藏夹。通过UID存储混合不会让我查询到已将该混合添加到用户库中的所有混合


更好的方法是对数据进行非规范化,并创建一个USERMIX节点,该节点列出用户UID下的所有混合?

据我所知,这可能是一个示例

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

UID代表用户Id。UID是Firebase在内部跟踪已验证用户的方式,即创建用户时,它们被分配了一个UID,然后可以使用该UID创建您自己的/users节点,您可以在其中存储关于每个用户/users/UID_0和/users/UID_1等的附加信息。如果您想创建唯一的键来存储其他类型的数据,通常可以通过childByAutoId()(swift)或push()来完成。如果您的问题中没有关于您的用例和平台的更多信息,我们将无法提供更多信息,Firebase中的数据建模是一个非常广泛的主题。最好的模型是适用于您的用例的模型。这是一种非建议,但实际上非常重要:在NoSQL中,您通常会为应用程序的用例扩展数据模型。我推荐阅读和观看。嘿,谢谢你的回答!事实上,我有一个后续问题。例如,我如何将对象嵌套在此结构中而不是所有歌曲-->songId将其设为songs-->UID-->songId-->SongDetails是否有意义。如果是这样的话,我如何将其插入数据库而不创建一个对象来保存歌曲Id并向该对象添加歌曲对象?最好只使用songId存储歌曲。向歌曲添加uid节点可能会导致歌曲重复。更好的结构是songs->songid->songObject。您可以通过songsRef.child(““songId”).setValue(songObject”)插入songObject。