我正在研究数据库的概念模型。我有以下实体:
Student (id, name, date of birth, department)
Subject (id, name)
Run Code Online (Sandbox Code Playgroud)
这是一个多对多的关系,一个学生可能报了很多门课,每门课都有很多学生。据我所知,因为我应该通过向实体中引入一个新事物来打破这种多对多关系,比如说“注册”,它允许一对一的关系或一对多的关系?
这是正确的设计决定吗?
Bac*_*its 12
通常,多对多关系是通过连接表完成的,如下所示:
Student (id, name, date of birth, department)
Course (id, name)
Student_Course (student_id, course_id)
Run Code Online (Sandbox Code Playgroud)
您可以在Student_Course
表上创建一个人工键,也可以为两个字段创建一个主键或唯一索引。 student_id
是 的外键student.id
并且course_id
是 的外键course.id
。
请注意,连接表不必正好是两个字段。您可以包含诸如date_added
或者date_dropped
所以你可以看到,当学生和分出课程。