2017-07-02 70 views
0

情况:基本的firebase数据库结构设计决策

在应用程序中,我们有多达1000所学校。每所学校都有学生和学生上课并参加活动(等等)。我们需要快速且经常地为每个学生每个学校的日期查询课程。我们有两种设计,想知道最佳的处理方式。

1 - 设计专用校节点

2 - 设计,没有专用校节点

的两种设计实例

Example of the 2 designs

PRO设计1
- 登录后向学校用户提供root权限。野应需要在学生证
查询 - 没有必要提及学生证到处
- 无需节点的每个学校减轻和每个学校活动
- 上一级学校
...

PRO设计2规则
- 更扁平化的数据,作为互联网

回答

1

对于大多数的NoSQL数据库结构上广为告知,压扁denormalising数据是最好的方法。 Firebase也是如此。

当您汇整数据,你会得到以下优点: -

  1. 你大多只下载所需的最低量。这导致了效率和成本效益。
  2. 您的下载速度要快得多 - 特别是与SQL连接查询类似。

话虽如此,在您的具体情况下,我认为这取决于school对登录用户的影响程度。

假设school只是一个学生的属性,并没有其他用途,那么第二个数据库就是要走的路。例如,如果一个学生可以得到的书独立于她所去的学校,那么第二个数据库风格更适合。

但是,如果school类别的学生成为定义它们与数据库交互的组,那么第一个数据库结构就是要走的路。一个例子就是,一个学生只有在她去的学校有书时才能得到一本书。

无论您的决定如何,我想赞扬您的事实,即您的数据库在您的结构中已经变得非常好!我个人的建议是使用更方便的编码,阅读和维护。

+0

学生对数据库的所有互动只与一所学校有关,学校从不共享相同的目标。一所学校可能在中国,另一所在墨西哥。所以,我想去选择一个。非常感谢您的反馈!它确实帮助我做出决定。 –

+0

没问题!我很高兴我能提供帮助。如果你认为我的答案会帮助其他人陷入类似的情况,那么请接受它。这会让其他人更容易找到,甚至可以信任。 –