MySQL DB结构的良好实践

时间:2016-03-04 14:15:02

标签: mysql sql

我正在建立一个管理学生上课的系统。我创建了两个表:学生(student_id,姓名,邮件......)和课程(course_id,姓名,讲师......)。现在我的问题是我应该如何记录哪些学生参加哪些课程?

我应该为这个结构的每个课程创建另一个表: COURSE_ID,讲师,student_1,students_2,student_3 ...

或者可能有更好的解决方案来创建这种关系? TX

更新:我应该提到学生可以参加几门课程

3 个答案:

答案 0 :(得分:3)

由于您的表之间存在多对多关系(每个学生可以参加多个课程,每个课程可以由多个学生参加),您需要一个中间表,其中包含两个表的主键。

coursestudent(course_id,student_id)

使用相应表格的FOREIGN KEY。

答案 1 :(得分:2)

取决于,如果学生可以有多个课程,并且课程属于多个学生,您想要制作一个包含id,course_id(FOREIGN KEY)和student_id(FOREIGN KEY)的表。

如果学生只能开设一门课程,但是多个学生可以选择一门课程,那么您可能希望将course_id作为外键添加到学生中。

答案 2 :(得分:1)

你需要两张桌子,

students (student_id, studentName, student.....)

courses (course_id, student_id, courseName, course....)

此处,学生与student_id课程以及course_id表格中的courses相关。

编辑:

course_id   student_id      courseName
    c12         s34             DB
    c12         s35             DB
    c43         s86             OS
    c65         s45             PHP
    c57         s86             OS
    ...         ...             ...
    ...         ...             ...
    ...         ...             ...