在应用程序中,我们有多达1000所学校。每所学校都有学生和学生上课并参加活动(等等)。我们需要快速且经常地为每个学生每个学校的日期查询课程。我们有两种设计,想知道最佳的处理方式。
1 - 设计专用校节点
2 - 设计,没有专用校节点
的两种设计实例
PRO设计1
- 登录后向学校用户提供root权限。野应需要在学生证
查询 - 没有必要提及学生证到处
- 无需节点的每个学校减轻和每个学校活动
- 上一级学校
...
PRO设计2规则
- 更扁平化的数据,作为互联网
在应用程序中,我们有多达1000所学校。每所学校都有学生和学生上课并参加活动(等等)。我们需要快速且经常地为每个学生每个学校的日期查询课程。我们有两种设计,想知道最佳的处理方式。
1 - 设计专用校节点
2 - 设计,没有专用校节点
的两种设计实例
PRO设计1
- 登录后向学校用户提供root权限。野应需要在学生证
查询 - 没有必要提及学生证到处
- 无需节点的每个学校减轻和每个学校活动
- 上一级学校
...
PRO设计2规则
- 更扁平化的数据,作为互联网
对于大多数的NoSQL数据库结构上广为告知,压扁denormalising数据是最好的方法。 Firebase也是如此。
当您汇整数据,你会得到以下优点: -
话虽如此,在您的具体情况下,我认为这取决于school
对登录用户的影响程度。
假设school
只是一个学生的属性,并没有其他用途,那么第二个数据库就是要走的路。例如,如果一个学生可以得到的书独立于她所去的学校,那么第二个数据库风格更适合。
但是,如果school
类别的学生成为定义它们与数据库交互的组,那么第一个数据库结构就是要走的路。一个例子就是,一个学生只有在她去的学校有书时才能得到一本书。
无论您的决定如何,我想赞扬您的事实,即您的数据库在您的结构中已经变得非常好!我个人的建议是使用更方便的编码,阅读和维护。
学生对数据库的所有互动只与一所学校有关,学校从不共享相同的目标。一所学校可能在中国,另一所在墨西哥。所以,我想去选择一个。非常感谢您的反馈!它确实帮助我做出决定。 –
没问题!我很高兴我能提供帮助。如果你认为我的答案会帮助其他人陷入类似的情况,那么请接受它。这会让其他人更容易找到,甚至可以信任。 –