一对多关系数据库设计

时间:2016-04-02 15:54:34

标签: database

目前我正在研究学生系统,在我的项目中,我需要让每个学生都注册了许多课程......设计数据库的最佳方法是什么? 目前我已经创建了一个名为学生的表,其中包含学生信息, 一个名为courses的表包含课程名称。 我知道这样做的方法是从学生表格引用课程表中创建一个外键,我已经尝试过,但我对此如何准确。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要创建一个表来建模多对多关系:

Students [ id | name | etc..]
Courses  [ id | name | etc.. ]
Students in Courses [ id | student_id | course_id ]

你也可以详细了解这里的关系(学生在哪一年进入课程,他/她完成了哪一年,是学费等等。)

这些表格中的数据如下所示:

<强>

Id       Name   
------   --------
S1       John
S2       Jane
S3       Mike
S4       Larry

<强> 课程

Id       Name   
------   --------
C1       Java for beginners
C2       C# for dummies
C3       Phyton for Noobs

课程中的学生

Id     CourseId StudentId   
-----  ------   --------
01     C1       S1
02     C2       S1
.....
99     C3       S3

您可以使用表格上的内部联接来查询数据(伪代码):

Select S.Id, S.Name, C.Id, C.Name
From Students S
Inner Join 'Students in Courses' SC ON S.Id = SC.StudentId
Inner Join Courses C ON SC.CourseId = C.Id