
1) 【一句话结论】围绕干部培训课程资源管理,设计包含课程、教师、学员、成绩四大核心实体的数据库表,通过外键关联实现课程负责人、多对多成绩关联,并补充考试时间、类型等业务字段,确保数据完整性与业务需求匹配。
2) 【原理/概念讲解】设计基于实体-关系(ER)模型,核心实体为课程、教师、学员、成绩。课程与教师是一对多(一个课程对应多个教师,一个教师可教多课程),课程表需添加“负责人教师ID”外键关联教师表;课程与学员是一对多,成绩表实现多对多关联;成绩表需扩展“考试时间”“考试类型”字段。外键约束保证数据一致性,比如课程负责人不能为空,成绩关联的course_id和student_id必须存在。
3) 【对比与适用场景】
| 关系类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 一对一 | 一个实体对应一个另一个实体 | 主键在任一方表,外键指向另一方 | 如学员与学籍(一个学员一个学籍) | 通常通过外键指向一方 |
| 一对多 | 一个实体对应多个另一个实体 | 主键在“一”方表,外键在“多”方表 | 课程与教师(一个课程多个教师) | 主键在教师表(教师表是“多”方) |
| 多对多 | 多个实体对应多个另一个实体 | 需中间表,含两个外键 | 课程与学员(一个课程多个学员,一个学员多课程) | 中间表主键为两个外键组合 |
4) 【示例】
-- 课程表(含负责人教师ID)
CREATE TABLE Course (
course_id INT PRIMARY KEY,
course_name VARCHAR(100) NOT NULL,
start_time DATE,
end_time DATE,
teacher_id INT, -- 负责人教师ID,外键关联Teacher
FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id)
);
-- 教师表
CREATE TABLE Teacher (
teacher_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
major VARCHAR(50)
);
-- 学员表
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
department VARCHAR(100)
);
-- 成绩表(含考试时间、类型)
CREATE TABLE Score (
score_id INT PRIMARY KEY,
course_id INT,
student_id INT,
score INT CHECK (score >= 0 AND score <= 100),
exam_time DATETIME, -- 考试时间
exam_type ENUM('笔试','面试','实践'), -- 考试类型
FOREIGN KEY (course_id) REFERENCES Course(course_id),
FOREIGN KEY (student_id) REFERENCES Student(student_id)
);
5) 【面试口播版答案】
“面试官您好,我设计的干部培训课程资源管理系统数据库结构围绕四大核心实体展开:课程、教师、学员和成绩。首先,课程表(Course)包含课程ID、名称、开课时间、负责人教师ID(外键关联教师表),明确每个课程的责任教师;教师表(Teacher)记录教师ID、姓名、专业;学员表(Student)记录学员ID、姓名、部门。成绩表(Score)作为多对多关联表,通过课程ID和学员ID关联课程与学员,同时记录分数、考试时间(DATETIME类型)和考试类型(ENUM,如笔试、面试)。关系上,课程与教师是一对多(一个课程对应多个教师,一个教师可教多课程),课程与学员是一对多(一个课程有多个学员),成绩表实现课程与学员的多对多关联。这样设计既保证了核心关系完整(如课程负责人),又满足业务需求(如成绩的考试时间、类型),能支持后续的查询、统计等操作。”
6) 【追问清单】
7) 【常见坑/雷区】