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

基本firebase数据库结构设计决策,firebase,data-structures,firebase-realtime-database,nosql,Firebase,Data Structures,Firebase Realtime Database,Nosql,情况:在应用程序中,我们有多达1000所学校。每所学校都有学生,学生们正在上课并参加活动(以及更多)。我们需要快速且经常地查询每个学生、每个学校、每个日期的课程。我们考虑了两种设计,想知道最好的方法 1-具有专用学校节点的设计 2-设计没有专门的学校节点 两种设计的示例 专业设计1 -登录后将root ref发送给学校用户。无需查询学校id -不用提学校id到处都是 -每个学校不需要节点减少,每个学校不需要活动 -学校层面的规则 … 专业设计2 -更平坦的数据,正如互联网上广泛建议的那样对于大

情况:在应用程序中,我们有多达1000所学校。每所学校都有学生,学生们正在上课并参加活动(以及更多)。我们需要快速且经常地查询每个学生、每个学校、每个日期的课程。我们考虑了两种设计,想知道最好的方法

1-具有专用学校节点的设计

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

两种设计的示例

专业设计1
-登录后将root ref发送给学校用户。无需查询学校id
-不用提学校id到处都是
-每个学校不需要节点减少,每个学校不需要活动
-学校层面的规则


专业设计2

-更平坦的数据,正如互联网上广泛建议的那样

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

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

  • 大多数情况下,您只下载了所需的最低数量。这将提高效率和成本效益
  • 您的下载速度要快得多,特别是与SQL连接查询等相比
  • 话虽如此,在您的特殊情况下,我认为这实际上取决于
    学校对登录用户的影响程度

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

    但是,如果
    学校
    将学生划分为定义他们与数据库交互的组,那么第一个数据库结构就是要走的路。这方面的一个例子是,一个学生只有在她所就读的学校有一本书时才能得到它


    不管您的决定如何,我要赞扬您在两个结构中都很好地展平了数据库!我个人的建议是选择一个更便于编码、阅读和维护的数据库。

    学生与数据库的所有交互都只与一所学校相关,而学校的目标也不相同。一所学校可能在中国,另一所在墨西哥。所以,我想选择第一种。非常感谢您的反馈!它确实帮助我做出了决定。没问题!我很高兴能帮上忙。如果你认为我的回答会帮助其他陷入类似境地的人,那就接受吧。这将使其他人更容易找到,也许,信任。