多对多关系

Alp*_*uno 3 database-design

我正在研究数据库的概念模型。我有以下实体:

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所以你可以看到,当学生和分出课程。