【发布时间】:2017-12-16 21:02:58
【问题描述】:
我最近开始深入研究服务器端,并且正在开发一个应用程序,我需要考虑如何规划我的模型。
我的用户是教师,可以在仪表板中创建学生列表。我的模式将包含更多指令以防止创建重复项,但我在这里简化了它们。到目前为止,这是我尝试过的:
// Teacher Model
const Teacher = new Schema({
fname: String,
lname: String,
email: String,
})
// Student Model
const Student = new Schema({
fname: String,
lname: String,
full: String,
uuid: String
grades: {
classwork: Array,
quizzes: Array,
tests: Array
}
})
这就是我缺乏后端工作经验的地方。这个设置对我来说真的没有意义。说当我去保存一个学生时,它会在数据库的学生集合下创建一个新学生。这并不理想,因为学生应该以创建它的老师可以严格访问的方式存储。
我正在考虑在我的 Teachers Schema 中创建一个名为“students”(这将是一个数组)的新键,每次创建一个时都会将一个学生推入其中。
正确地计划这一点绝对重要,因为老师将来会有更多的能力,比如创建作业、给学生评分等。我想在设计时考虑到最佳实践,以确保教师数据对其他用户是安全的。
【问题讨论】:
-
你没有
CourseSchema吗? -
这是我正在努力解决的另一件事。我希望如果我能回答这个原始问题,我就能自己解决这个问题。但是,我仍然不确定我将如何做到这一点。
-
IMO 我认为
ClassSchema对这个设计很重要。一个老师有很多班,每个班有很多学生。班级是连接它们和许多其他事物的桥梁。我个人会将它们保留为单独的实体,并通过引用将它们连接起来。例如,您可能拥有带有两个引用数组的ClassSchema:teachers和students。这将允许您找到特定班级的教师和学生。您可能会发现在您的TeacherSchema中包含classes(引用数组)很有用。这样可以轻松找到老师的课程。
标签: node.js mongodb database-design mongoose