我需要数据库表“课程”和“学生”。
我已经创建了Courses表,但是我在创建Students表时遇到了问题。
两个班级可能有相同的学生,因此同一学生行将在学生表格中以不同的"course_number"
两次存在。我不想要复制行。这样我就不能将"student_number"
设为primary key
。因为它会为多个类存在两次。如何设计这个表,我不能将多个"course_number"
放在同一列上。
答案 0 :(得分:1)
学生(身份证号码,姓名,号码) 课程(身份证,姓名,号码) StudentsCourses(student_id,course_id)
你必须建立多对多的关系。
答案 1 :(得分:1)
这是多对多的典型案例,为此,您需要在课程和学生之间设置第三个表格。架构看起来像这样:
Course
表有列(“course_id”,“course_name”)
Student_course
表有列(“student_id”,“course_id”);
Student
表作为列(“student_id”,“student_name”)
Student_course表对学生和课程表都有外键约束。
示例数据:
课程:
id | name
------------------
1 | Maths
2 | English
3 | Science
学生
id | name
---------------
1 | Tom
2 | Dick
3 | Harry
Student_course
student_id | course_id
------------------------
1 | 1
1 | 2
2 | 1
3 | 3
在这个例子中,学生1(汤姆)在课程1和2(数学,英语),
学生2(迪克)仅参加课程1(数学)
学生3(Harry)仅参加第3课(科学)
答案 2 :(得分:1)
课程和学生之间有m到n的关系。 要将m转换为n关系,您需要第三个表。
courses_students
----------------
id_student
id_course
courses
----------------
id_course
// other fields
students
----------------
id_student
// other fields