mongodb设计多态与嵌入式



我正在考虑创建用户集合,该集合仅由两种类型的用户组成;老师和学生。

Users {
name: String,
dob: Date,
subjectsTaught: Array,
department: String,
grades: Array,
classroom: String,
}

这是多态性的标准方式,对吧?另一位开发人员建议这样做。

Users {
name: String,
dob: Date,
studentInfo: {
grades: Array,
classroom: String,
},
teacherInfo: {
subjectsTaught: Array,
department: String,
},
}

我无法解释为什么我的方法是正确的。这两种模式的优缺点是什么?

第二个对我来说更好,因为它专门化了实体,并且只有涉及两个子项的数据才由Users实体处理。CDM将类似于

  • USER(id, name, dob)
  • 其中id_user是外键的STUDENT(id_user, grades, classroom)引用user.id
  • 其中id_user是外键的TEACHER(id_user, subjectTaught, department引用user.id

那么对象将与那些实体完全相同。

当然,subjectsTaughtgrades可以存储在单独的表中,因为它们是数组数据。但由于这不是你的问题,也不是概念层面的问题,我不会在这里放弃。

最新更新