You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建映射表关联Students与Courses两张数据表?

如何创建学生与课程的关联映射表(多对多关系)

Got it! 这是数据库里很常见的多对多关系场景——一个学生能选多门课,一门课也能被多个学生选,所以必须用一张中间映射表来衔接这两张表。我给你一步步拆解实现过程:

1. 创建中间映射表

首先你需要创建一张中间表(通常命名为student_enrollments、student_course这类直观的名字),用来存储学生和课程的关联关系。这张表需要包含两个外键,分别关联Students表和Courses表的主键,还可以按需添加额外字段(比如选课日期)。

假设你的Students表主键是student_id(整数类型),Courses表主键是course_id(整数类型),用MySQL语法创建表的示例如下:

CREATE TABLE student_enrollments (
    student_id INT NOT NULL,
    course_id INT NOT NULL,
    enrollment_date DATE DEFAULT CURRENT_DATE, -- 可选字段:自动记录选课日期
    PRIMARY KEY (student_id, course_id), -- 复合主键:避免同一个学生重复选同一门课
    -- 外键关联Students表,级联更新/删除(可根据业务需求调整)
    FOREIGN KEY (student_id) REFERENCES students(student_id) 
        ON DELETE CASCADE 
        ON UPDATE CASCADE,
    -- 外键关联Courses表,级联更新/删除(可根据业务需求调整)
    FOREIGN KEY (course_id) REFERENCES courses(course_id) 
        ON DELETE CASCADE 
        ON UPDATE CASCADE
);

小提示:ON DELETE CASCADE意味着如果删除Students里的某个学生,中间表中对应的选课记录会自动删除;ON UPDATE CASCADE则是如果学生/课程的主键更新,中间表的关联字段会同步更新,你可以根据实际业务场景调整这些规则。

2. 插入Mary Murphy与web designing课程的关联记录

接下来要把Mary和她选的课程绑定起来,分两步走:

  • 先查询获取Mary的student_id和web designing课程的course_id(如果你不知道这些ID的话):
-- 查询Mary Murphy的student_id
SELECT student_id FROM students WHERE first_name = 'Mary' AND last_name = 'Murphy';

-- 查询web designing课程的course_id
SELECT course_id FROM courses WHERE course_name = 'web designing';
  • 用查询到的真实ID,把关联记录插入中间表:
-- 替换成你实际查询到的student_id和course_id
INSERT INTO student_enrollments (student_id, course_id)
VALUES (1, 5);

3. 验证关联关系(可选)

如果你想确认关联是否成功,可以用JOIN查询查看Mary的选课信息:

SELECT c.course_name, se.enrollment_date
FROM students s
JOIN student_enrollments se ON s.student_id = se.student_id
JOIN courses c ON se.course_id = c.course_id
WHERE s.first_name = 'Mary' AND s.last_name = 'Murphy';

内容的提问来源于stack exchange,提问作者Devendra Adhikari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:52:50