Database Firestore:学术时间表结构

Database Firestore:学术时间表结构,database,google-cloud-firestore,Database,Google Cloud Firestore,我正试图找出一个有效的结构来存储Firestore中的学术时间表 我需要解决的问题是: 每门课程都有自己的开始和结束时间 每门课程都有自己的持续时间(以周为单位) 每门课程都有许多不同的时间表 需要能够分析每堂课的出勤率 以下是我现在的结构: courses - course_id: string - duration: number (weeks, eg: 24) - end_time: number (timestamp of the last course day) - sta

我正试图找出一个有效的结构来存储Firestore中的学术时间表

我需要解决的问题是:

  • 每门课程都有自己的开始和结束时间
  • 每门课程都有自己的持续时间(以周为单位)
  • 每门课程都有许多不同的时间表
  • 需要能够分析每堂课的出勤率
以下是我现在的结构:

courses
 - course_id: string
 - duration: number (weeks, eg: 24)
 - end_time: number (timestamp of the last course day)
 - start_time: number (timestamp of the first course day)
 - name: string

modules
 - module_id: string
 - lectures: array
   - lecture_id
 - name: string
 - code: string
 - no_students: number

classes
 - class_id: string;
 - start_time: string (eg: 10:00)
 - end_time: string (eg: 11:00)
 - weekday: string (eg: Monday)
 - module: map (a copy of module object to reduce reads)
 - start_week: number
 - end_week: number

timetables
 - timetable_id: string
 - classes: array
   - class_id
 - duration: number (duration in weeks, eg: 11)
 - semester: number
 - week: string (current week, eg: 4)

users
 ...
 - timetable_id: string
一个单独的班级集合可以更容易地与考勤集合进行比较

为了阅读时间表,我先获取用户文档,然后获取时间表文档,然后使用
firestore.getAll()
获取类。这会导致大量的文档读取

要更新本周,我需要更新每个时间表文档

有什么更好的方法来解决这个问题


感谢您的时间和帮助。

在Firestore的不同文档中重复重要数据非常好


假设戴安娜想通过电话阅读她的时间表,她的时间表有4门课程,3个模块,10节课。将所有这些细节放在一个文档中,这样当她想在应用程序屏幕上查看她的时间表时,应用程序就会阅读一个文档来完成她的时间表。每个学生都有自己的时间表文件

你为什么要问更好的方法?这一个有什么问题?只是想知道是否有一种方法可以减少读取,因为这样会更便宜。你试图优化一些甚至还不是问题的东西?现在优化一些东西比在生产时更容易。你还没有告诉我们这一个有什么问题,所以它需要“立即优化”。