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