【发布时间】:2020-10-24 02:12:38
【问题描述】:
我正在为学校管理设计一个数据库。
这里不是一所学校,而是多所学校,有自己的学生、班级、教师和科目。
这是要求。
• 一所学校可以有多个班级
• 一个类可以有许多子类
• 许多学生可以属于一个班级的一个部分
• 许多教师可以属于一个班级的一个部分
• 许多科目可以属于一个类的一个部分
• 学校想要管理班级
• 学校想要管理部门
• 学校希望在班级的某个部分管理科目
• 学校想为班级某个部分的某个科目分配一名教师
• 学校可以为学生分配班级的一个部分
另外,有些学校可以有名为一、二、三的班级,有些可能有一、二、三等。部分或子类也一样
对于实体 School 和 Teacher 来说,事情是直截了当的。以下是我对他们的方法。
School
--------------
id
name
...
Teacher
--------------
id
school_id
name
但我在为学校规划班级和部门时遇到了问题。
我尝试创建另外两个实体类和部分,并给它们一个学校的外键
SchoolClass
-----------------
school_id
class_name
...
SchoolSection
----------------
school_id
section_name
...
为了将学校的班级映射到它的所有部分,我创建了一个联结表,因为它将是多对多的关系。
SchoolClassSection
---------------------------------------------------------
school_class_id
school_section_id
但正如我上面提到的,我还需要将科目和教师添加到课程的某个部分,所以尝试如下所示。
SchoolClassSections
---------------------------------------------------------
school_class_id
school_section_id
subject_id
teacher_id
但现在我在联结表中有四个外键。
在一个联结表中有两个以上的外键是否没有问题?
另外,我也需要添加学生,但我现在想不通如何进一步提高班级、部分的学生关系?
我可以像下面这样的一件事
student
-----------
school_id
school_class_section_id // but if SchoolClassSections can have subject_id and teacher_id too it will become confusing
【问题讨论】:
标签: mysql sql database database-design many-to-many