Firestore分层设计 - 课程,学生
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firestore分层设计 - 课程,学生相关的知识,希望对你有一定的参考价值。
我设计了我的json树,如下所示:
- 学生(收藏) studentId(文件) 名称 课程(收藏) courseId(文件) 课程名 examDegree
对于学生观点,我需要获得特定学生注册学位的所有课程,对于教师观点,我需要让所有注册了特定课程的学生获得学位。
对于学生视图:db.collection('students')。doc('studentId')。
1-这种情况的设计似乎没问题吗?
2-如何查询在特定课程中注册的所有学生?
答案
这个设计没问题,但是你会遇到一些查询问题,因为结构有点“深入”。 Denormalizing is normal读起来不错。
我需要获得特定学生注册的所有课程
您的结构适用于此特定任务,您可以知道哪个学生,并且您希望获得他们的课程。你甚至不需要查询;只需观察学生/ studentId /课程中的节点,您就可以得到所需的信息。
老师的观点我需要让所有注册参加特定课程的学生参加
这个不适用于您的结构。嗯,这不是完全准确的,因为你可以利用深度查询但是如何做到这一点
students
studentId_0
name: "Bill"
courses:
courseId_0: true
courseId_1: true
studentId_1
name: "Ted"
courses:
courseId_1: true
courses_available
courseId_0
studentId_0: true
courseId_1
studentId_0: true
studentId_1: true
通过这种结构,您可以通过该学生课程节点获得学生注册的所有课程,或者通过教师视图,通过courses_available节点获取所有注册特定课程的学生。
在这种情况下,Bill在课程0和1中,Ted在课程1中
还有许多其他方法可以构建它,但是这种结构允许您在没有查询的情况下获取数据。查询比观察节点有点“重”,所以如果观察是一个选项,那更好。
以上是关于Firestore分层设计 - 课程,学生的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个集合添加到 Firestore 中的集合 android studio