我目前正在开发一个IOS应用程序,后端由Firebase提供。这是我第一次使用NOSql
后端,想要了解如何最好地构建数据。目前,该应用将成为基于用户的应用,该应用仅包含与其Feed中显示的每个用户相关的详细信息。因此,如果他们将注释发布到备注区域,则只有他们可以访问它。将不会共享此信息。我目前如何设置数据的方法是让一个名为" notes"和一个名为" users"的端点。我打算把每个人的笔记放在"笔记"然后在" notes"的每个用户下面输入一个条目。参考" noteId"在主要"笔记"区域。这是否更有意义,然后只有一个孩子的#34;用户"正在"笔记"那里有实际的笔记数据吗?
notes >
noteId >
noteName
noteDetails
noteId >
noteName
noteDetails
noteId >
noteName
noteDetails
user >
notes >
noteId
noteId
noteId (these would reference the note in notes)
name
dateAdded
这在某种程度上是当前的数据。这是最好的方法吗?我有一个mySql背景,我很难完全理解noSql。
答案 0 :(得分:3)
如果您需要跨用户访问笔记,则在单个顶级节点中保留所有用户的笔记是有意义的。但请注意,您应该非常小心查询所有笔记,因为如果您的应用程序真正成功,这可能会成为瓶颈。
如果您只需要访问特定用户的注释,您也可以单独为每个用户分配注释:
notes >
user1 >
noteId >
noteName
noteDetails
noteId >
noteName
noteDetails
user2 >
noteId >
noteName
noteDetails
这种数据结构可以更好地隔离数据,代价是没有长长的笔记列表。
除此之外,您正在嵌套应该展平的数据:用户配置文件和用户注释应位于单独的顶级节点中:
users >
userId >
name
dateAdded
userNotes >
userId >
noteId
noteId
noteId (these would reference the note in notes)
使用此功能,您可以检索用户名列表,而无需获取所有注释ID。然后,当您需要显示特定用户的注释时,只需访问/userNotes/<uid>
下的注释键,然后加载每个节点。
如果您是NoSQL数据建模的新手,我建议您阅读NoSQL data modeling。如果您来自关系/ SQL背景,我建议您查看Firebase for SQL developers。