创建两个连接表的数据库选择?

Database choice for creating two connected tables?

我必须数据库 tables "Courses" 和 "Students".

我已经创建了课程 table,但我在创建学生 table 时遇到问题。

两个 类 可能有相同的学生,因此同一个学生行将在学生 table 中以不同的 "course_number" 存在两次。我不想复制行。通过这种方式,我也不能将 "student_number" 设为 primary key。因为对于多个类它会存在两次。如何设计这个 tables,我不能将多个 "course_number"s 放在同一列中。

学生(id、姓名、编号) 课程(id、姓名、编号) 学生课程 (student_id, course_id)

你必须建立多对多关系。

这是多对多的典型案例,为此,您需要在课程和学生之间添加第三个 table。架构将如下所示:

Course table 有列 ("course_id", "course_name")

Student_course table 有列 ("student_id", "course_id");

Student table 作为列 ("student_id", "student_name")

Student_course table 对学生和课程 table 都有外键约束。

示例数据:

课程:

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 (Tom) 正在学习课程 1 和 2(数学、英语),

学生 2(迪克)只上课程 1(数学)

学生 3(Harry)仅在课程 3(科学)上

课程与学生之间存在 m 对 n 关系。 要将 m 映射到 n 关系,您需要第三个 table.

courses_students
----------------
id_student
id_course

courses
----------------
id_course
// other fields

students
----------------
id_student
// other fields