在Teacher to Student应用程序中构建数据库中对象的最佳做法是什么?更具体地说,教师将有多个学生,学生可能有多个他们将与之互动的教师。现在,老师指导的每个班级都有一个"班级ID"当学生注册时,他们会将相同的班级ID添加到他们模型中的列表中。当老师想要查看名单时,我会使用
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
" ABC123"是一个示例类代码。
目前它是非常基本的代码 - 只需启动一个粗略的应用程序。我是否应该在教师和学生之间建立某种类型的不同数据库结构?
对于基本的,也许令人困惑的问题感到抱歉,我对网络开发并不陌生,只是不想让自己陷入困境。
我使用的是MEAN堆栈,但我认为这是一个更具概念性的问题。
谢谢
答案 0 :(得分:0)
dmfay的评论非常有见地。使用关系模型,使用猫鼬是次优的。但是,您当然仍然可以使用它。它会是这样的(顺便说一句,你不清楚这一点,但它暗示每个学生和老师有多个班级ID,我在这个假设下工作)
var mongoose = require("mongoose");
var StudentSchema = new mongoose.Schema({
//other student details
teachers: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Teacher"
}],
classIds: [STRING]
});
module.exports = mongoose.model("Student", StudentSchema);
然后教师架构将沿着相同的路线:
var mongoose = require("mongoose");
var TeacherSchema = new mongoose.Schema({
//other teacher details
students: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Student"
}],
classIds: [STRING]
});
module.exports = mongoose.model("Teacher", TeacherSchema);
然后,你怎么做的是,当一个学生参加课程时,你会在他们的classIds数组中找到所有具有该classId的教师,你循环将他们添加到他们的每个学生数组中,然后添加他们(老师)到学生的老师阵列。
当你想要搜索一个班级中的所有学生时,你就像你一样,除了classIds是一个字符串数组,而不是一个字符串,你需要检查它们是否匹配