我设计了我的json树:
对于学生观点我需要获得特定学生注册学位的所有课程,而对于教师观点,我需要让所有注册参加特定课程的学生获得学位。
用于学生视图:db.collection(' students')。doc(' studentId')。
1-这个设计看起来好吗?
2-如何查询在特定课程中注册的所有学生?
答案 0 :(得分:0)
这个设计还可以,但是你会遇到一些查询问题,因为结构有点'深层'。 Denormalizing is normal是一本很好的读物。
我需要获得特定学生注册的所有课程
您的结构适用于此特定的任务,您可以在该任务中了解它是哪个学生,并且您希望获得他们的课程。你甚至不需要查询;只需观察学生/学生/课程中的节点,您就可以得到所需的信息。
老师的观点我需要让所有注册的学生都参加 具体课程
这个不适用于您的结构。好吧,这并不完全准确,因为你可以利用深度查询但是这个怎么样
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
还有许多其他方法可以构建它,但是这种结构允许您在没有查询的情况下获取数据。查询比观察节点有点“重”,所以如果观察是一个选项,那就更好了。