在M-M关系中,通常需要创建一个中间表。这样可以避免数据冗余。以下是一个示例:
假设我们有两个表:学生和课程。一个学生可以注册多门课程,一门课程也可以由多名学生注册。为了实现这种M-M关系,我们需要创建一个中间表,例如:
CREATE TABLE student_course (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
在这种情况下,每个学生和每门课程只需要在其对应的表中存储一次。为了查询学生所注册的所有课程,我们可以使用以下查询:
SELECT course.*
FROM course
JOIN student_course ON course.id = student_course.course_id
WHERE student_course.student_id = <student_id>;
这个查询将返回给定学生所注册的所有课程。