【发布时间】:2015-01-04 21:48:18
【问题描述】:
我更习惯于关系数据库,并且很难考虑如何在 mongoDB 中设计我的数据库,并且在考虑到 meteorjs 数据库设计的一些特殊考虑时更加不清楚,我在哪里了解您通常更喜欢单独的集合而不是嵌入的文档/数据,以便更好地利用您从集合中获得的一些好处。
假设我想跟踪学生在高中的学习进度。他们需要在每个学年完成某些必修课才能升读下一年(大一、大二、大三、大四),还可以完成一些选修课。我需要跟踪学生何时完成每个要求或选修课。每年的要求可能略有不同,但我需要记住,例如,Johnny 完成了两年前存在的所有新生要求。
所以我有:
学生 要求 选修课 年级(初等) 年
大多数情况下,我正在尝试考虑如何设置要求。在关系数据库中,我有一个要求表,其中包含 className、grade 和 year,以及一个 student_requirements 表,用于在学生完成每个要求时对其进行跟踪。但我正在考虑在 MongoDB/meteorjs 中,我会为每个年级/级别创建一个模型,该模型与一个 studentID 一起存储,并最初为每个要求使用错误值进行实例化,例如:
{
student: [studentID],
class: 'freshman'
year: 2014,
requirements: {
class1: false,
class2: false
}
}
当学生完成一个要求时,它会更新如下:
{
student: [studentID],
class: 'freshman'
year: 2014,
requirements: {
class1: false,
class2: [completionDateTime]
}
}
因此,通过这种方式,每个学生将收集四个Requirements 文档,这些文档在某种程度上取决于它们的初始实例化值。而不是每个年级/年的实际要求存在于数据库中,它们本质上将存在于代码本身中。
我希望能够支持的一些操作是同时标记一组学生的要求,并显示用户/要求网格以查看谁需要什么。
这听起来合理吗?还是有更好的方法来解决这个问题?我在这个应用程序中很早,希望避免把自己画到一个角落里。任何帮助建议表示赞赏。谢谢! :-)
【问题讨论】: