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

C++学生选修课程系统

C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了,C语言和C++的都可以。

[课程设计] 学生成绩管理系统(Python版)

Python课程设计之学生信息管理系统

C#课程设计之学生教务管理系统