
1) 【一句话结论】
采用关系型数据库设计,通过规范化表结构(第三范式)保证数据一致性,核心表包括课程、用户(学生/教师)、选课、作业、考试等,通过外键关联,支持在线作业、考试等扩展功能。
2) 【原理/概念讲解】
关系型数据库设计遵循范式(如第三范式),消除冗余,确保数据一致性。核心表通过外键约束关联,例如选课表的外键(user_id、course_id)引用用户表和课程表的主键,避免数据孤立。
3) 【对比与适用场景】
| 表名 | 字段(示例) | 约束/说明 |
|---|---|---|
| course | course_id (PK), course_name, teacher_id (FK), credit, start_date, end_date | 主键,外键关联teacher表,日期格式统一(如YYYY-MM-DD) |
| user | user_id (PK), username, role, email, password | role字段区分学生/教师(如student/teacher),密码加密存储 |
| enrollment | enrollment_id (PK), user_id (FK), course_id (FK), enrollment_date | 外键关联user和course,唯一约束(一个学生不能重复选同一门课) |
| assignment | assignment_id (PK), course_id (FK), title, description, due_date, status | 外键关联course,status如“待提交”“已提交”“已批改” |
| exam | exam_id (PK), course_id (FK), title, date, duration, type | 外键关联course,type区分考试类型(如笔试/机试),日期格式统一 |
4) 【示例】
伪代码表结构:
-- 课程表
CREATE TABLE course (
course_id INT PRIMARY KEY,
course_name VARCHAR(100) NOT NULL,
teacher_id INT NOT NULL,
credit INT NOT NULL,
start_date DATE,
end_date DATE,
FOREIGN KEY (teacher_id) REFERENCES user(user_id)
);
-- 用户表
CREATE TABLE user (
user_id INT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
role ENUM('student', 'teacher') NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL -- 加密存储
);
-- 选课表
CREATE TABLE enrollment (
enrollment_id INT PRIMARY KEY,
user_id INT NOT NULL,
course_id INT NOT NULL,
enrollment_date DATE,
FOREIGN KEY (user_id) REFERENCES user(user_id),
FOREIGN KEY (course_id) REFERENCES course(course_id),
UNIQUE (user_id, course_id) -- 确保唯一选课
);
-- 作业表
CREATE TABLE assignment (
assignment_id INT PRIMARY KEY,
course_id INT NOT NULL,
teacher_id INT NOT NULL,
title VARCHAR(100) NOT NULL,
description TEXT,
due_date DATE NOT NULL,
status ENUM('pending', 'submitted', 'graded') DEFAULT 'pending',
FOREIGN KEY (course_id) REFERENCES course(course_id),
FOREIGN KEY (teacher_id) REFERENCES user(user_id)
);
-- 考试表
CREATE TABLE exam (
exam_id INT PRIMARY KEY,
course_id INT NOT NULL,
teacher_id INT NOT NULL,
title VARCHAR(100) NOT NULL,
exam_date DATE NOT NULL,
duration INT NOT NULL, -- 分钟
type ENUM('written', 'online') NOT NULL,
FOREIGN KEY (course_id) REFERENCES course(course_id),
FOREIGN KEY (teacher_id) REFERENCES user(user_id)
);
5) 【面试口播版答案】
面试官您好,设计深圳大学教学管理系统(LMS)的核心数据表结构,我会采用关系型数据库,通过规范化设计保证数据一致性,核心表包括课程、用户(学生/教师)、选课、作业、考试等,通过外键关联。具体来说,课程表存储课程基本信息(如ID、名称、教师、学分),用户表区分学生和教师角色,选课表关联学生和课程,确保一个学生不能重复选同一门课。作业表和考试表分别支持在线作业和考试功能,通过外键关联课程和教师。外键约束(如选课表的外键)保证数据一致性,字段设计考虑扩展性,比如角色字段支持未来新增角色,日期字段统一格式便于查询。这样设计既满足当前选课需求,又能兼容未来在线作业、考试等扩展功能。
6) 【追问清单】
7) 【常见坑/雷区】