我正在创建一个学校成绩簿数据库。我有2张桌子:班级和老师。我有一个问题。老师需要成为班级的形式大师。我应该如何建立这种关系?
变式1: 类将具有 teacherId 属性。
变体2: 教师将拥有 classId 属性。
什么样的变体是对的?
答案 0 :(得分:7)
一般来说,有三种类型的关系:
<强>一到多强>
ClassID
放在老师的桌子上。<强>许多对多强>
TeacherClassLink
并将ClassID
和TeacherID
放入其中,以及像TeacherClassID
这样的标识列 - 根据评论,这被称为cross reference table
,尽管我总是非正式地将它们称为链接表。<强>一对一的强>
TeacherID
和ClassID
成为相同的值。在您的示例中,
Variant1 是一对多的关系,每个班级只能有一名教师,但每位教师都可以参加很多课程。
Variant2 是一对多的关系,每个班级可以有多个教师,但每个教师只能有一个班级。
根据应用程序的业务需求,您应该决定选择哪个选项。
答案 1 :(得分:0)
假设一个教师教授一个特定的课程,而教师通常可以教授多个课程,你需要将一个TeacherId添加到课堂实体。
答案 2 :(得分:0)
变体1允许更大的灵活性。使用此变体,您可以拥有多个具有相同教师ID的类。
class Class {
int TeacherId {get; set;} // this is absolutely necessary
// other properties
}
简单地说,教师被分配到一个或多个班级。 如果教师包含类ID,那么当同一位教师教授3个不同的课程时,会复制多少数据?