用户到用户数据库对象结构

时间:2018-01-28 21:55:59

标签: database express mongoose mean-stack

在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堆栈,但我认为这是一个更具概念性的问题。

谢谢

1 个答案:

答案 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是一个字符串数组,而不是一个字符串,你需要检查它们是否匹配