情况:
在应用中,我们拥有多达1000所学校。每所学校都有学生和学生上课,并参加活动(等等)。我们需要每个学生每个日期快速查询每个学生的课程。我们有两个设计,想知道最好的方法。
1 - 使用专门的学校节点进行设计
2 - 没有专门学校节点的设计
两种设计的例子
PRO设计1
- 登录后根目录ref给学校用户。 noo需要查询学校id的
- 无论何处都无需提及学校身份
- 每所学校不需要节点减少和每所学校的活动
- 学校规则
...
PRO设计2
- 在互联网上广泛建议的更扁平的数据
答案 0 :(得分:3)
对于大多数NoSQL数据库结构,平坦化和非规范化数据是最好的方法。这也是Firebase的情况。
当您展平数据时,您将获得以下优势: -
话虽如此,在您的特定情况下,我认为这实际上取决于school
对登录用户的影响程度。
假设school
只是学生的一个属性,并没有其他用途,那么第二个数据库就是可行的方法。例如,如果学生可以获得的书籍独立于她所去的学校,则第二种数据库样式更适合。
但是,如果school
将学生分类到定义与数据库交互的组中,那么第一个数据库结构就是可行的方法。这方面的一个例子是,学生只能在她去的学校获得一本书。
无论您的决定如何,我都要赞扬您在两个结构中都很好地平整了数据库!我个人的建议是选择一个更方便为你编码,阅读和维护的那个。