基本firebase数据库结构设计决策

时间:2017-07-02 08:50:28

标签: firebase data-structures firebase-realtime-database nosql

情况:

在应用中,我们拥有多达1000所学校。每所学校都有学生和学生上课,并参加活动(等等)。我们需要每个学生每个日期快速查询每个学生的课程。我们有两个设计,想知道最好的方法。

1 - 使用专门的学校节点进行设计

2 - 没有专门学校节点的设计

两种设计的例子

Example of the 2 designs

PRO设计1
- 登录后根目录ref给学校用户。 noo需要查询学校id的 - 无论何处都无需提及学校身份 - 每所学校不需要节点减少和每所学校的活动
- 学校规则
...

PRO设计2
- 在互联网上广泛建议的更扁平的数据

1 个答案:

答案 0 :(得分:3)

对于大多数NoSQL数据库结构,平坦化和非规范化数据是最好的方法。这也是Firebase的情况。

当您展平数据时,您将获得以下优势: -

  1. 您只需下载所需的最低金额。这可以提高效率和成本效益。
  2. 您的下载速度要快得多 - 特别是与SQL连接查询相比。
  3. 话虽如此,在您的特定情况下,我认为这实际上取决于school对登录用户的影响程度。

    假设school只是学生的一个属性,并没有其他用途,那么第二个数据库就是可行的方法。例如,如果学生可以获得的书籍独立于她所去的学校,则第二种数据库样式更适合。

    但是,如果school将学生分类到定义与数据库交互的组中,那么第一个数据库结构就是可行的方法。这方面的一个例子是,学生只能在她去的学校获得一本书。

    无论您的决定如何,我都要赞扬您在两个结构中都很好地平整了数据库!我个人的建议是选择一个更方便为你编码,阅读和维护的那个。