我正在考虑创建用户集合,该集合仅由两种类型的用户组成;老师和学生。
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
那么对象将与那些实体完全相同。
当然,subjectsTaught
和grades
可以存储在单独的表中,因为它们是数组数据。但由于这不是你的问题,也不是概念层面的问题,我不会在这里放弃。