创建两个连接表的数据库选择?
Database choice for creating two connected tables?
我必须数据库 tables "Courses" 和 "Students".
- 课程 table 有列(“_id”、"course_name"、"course_number")。
- 学生 table 有列("student_name"、"student_number"、"course_number")。
我已经创建了课程 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
我必须数据库 tables "Courses" 和 "Students".
- 课程 table 有列(“_id”、"course_name"、"course_number")。
- 学生 table 有列("student_name"、"student_number"、"course_number")。
我已经创建了课程 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