2025-12-05 17:38:20 +08:00
|
|
|
|
--用户表 (user)
|
|
|
|
|
|
CREATE TABLE user (
|
|
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
|
|
|
|
password VARCHAR(100) NOT NULL,
|
|
|
|
|
|
role ENUM('ADMIN', 'TEACHER', 'STUDENT') NOT NULL,
|
|
|
|
|
|
created_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
|
|
|
);
|
|
|
|
|
|
--老师表 (teacher)
|
|
|
|
|
|
CREATE TABLE teacher (
|
|
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
|
user_id INT UNIQUE NOT NULL,
|
|
|
|
|
|
name VARCHAR(50) NOT NULL,
|
|
|
|
|
|
teacher_id VARCHAR(20) UNIQUE NOT NULL,
|
|
|
|
|
|
department VARCHAR(100),
|
|
|
|
|
|
title VARCHAR(50),
|
|
|
|
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE
|
|
|
|
|
|
);
|
2025-12-03 15:05:23 +08:00
|
|
|
|
|
2025-12-05 17:38:20 +08:00
|
|
|
|
--学生表 (student)
|
2025-12-03 15:05:23 +08:00
|
|
|
|
CREATE TABLE student (
|
|
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
2025-12-05 17:38:20 +08:00
|
|
|
|
user_id INT UNIQUE NOT NULL,
|
2025-12-03 15:05:23 +08:00
|
|
|
|
name VARCHAR(50) NOT NULL,
|
2025-12-05 17:38:20 +08:00
|
|
|
|
student_id VARCHAR(20) UNIQUE NOT NULL,
|
|
|
|
|
|
class_name VARCHAR(50),
|
|
|
|
|
|
major VARCHAR(100),
|
|
|
|
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE
|
2025-12-03 15:05:23 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2025-12-05 17:38:20 +08:00
|
|
|
|
--课程表 (course)
|
|
|
|
|
|
CREATE TABLE course (
|
2025-12-03 15:05:23 +08:00
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
2025-12-05 17:38:20 +08:00
|
|
|
|
course_name VARCHAR(100) NOT NULL,
|
|
|
|
|
|
course_code VARCHAR(20) UNIQUE NOT NULL,
|
|
|
|
|
|
teacher_id INT NOT NULL,
|
|
|
|
|
|
description TEXT,
|
|
|
|
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
FOREIGN KEY (teacher_id) REFERENCES teacher(id) ON DELETE CASCADE
|
2025-12-03 15:05:23 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2025-12-05 17:38:20 +08:00
|
|
|
|
--学生-课程关联表 (student_course)
|
|
|
|
|
|
CREATE TABLE student_course (
|
|
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
|
student_id INT NOT NULL,
|
|
|
|
|
|
course_id INT NOT NULL,
|
|
|
|
|
|
enroll_date DATE NOT NULL,
|
|
|
|
|
|
status ENUM('ACTIVE', 'COMPLETED', 'DROPPED') DEFAULT 'ACTIVE',
|
|
|
|
|
|
UNIQUE KEY uk_student_course (student_id, course_id),
|
|
|
|
|
|
FOREIGN KEY (student_id) REFERENCES student(id) ON DELETE CASCADE,
|
|
|
|
|
|
FOREIGN KEY (course_id) REFERENCES course(id) ON DELETE CASCADE
|
|
|
|
|
|
);
|
2025-12-04 16:15:16 +08:00
|
|
|
|
|
2025-12-05 17:38:20 +08:00
|
|
|
|
--考勤记录表 (attendance_record)
|
2025-12-04 16:15:16 +08:00
|
|
|
|
CREATE TABLE attendance_record (
|
|
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
2025-12-05 17:38:20 +08:00
|
|
|
|
student_id INT NOT NULL,
|
|
|
|
|
|
course_id INT NOT NULL,
|
2025-12-04 16:15:16 +08:00
|
|
|
|
attendance_date DATE NOT NULL,
|
2025-12-05 17:38:20 +08:00
|
|
|
|
attendance_time TIME NOT NULL,
|
|
|
|
|
|
status ENUM('PRESENT', 'ABSENT', 'LATE') NOT NULL,
|
|
|
|
|
|
remarks TEXT,
|
|
|
|
|
|
created_by INT NOT NULL, -- 记录创建者(老师ID)
|
2025-12-04 16:15:16 +08:00
|
|
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
2025-12-05 17:38:20 +08:00
|
|
|
|
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
UNIQUE KEY uk_student_course_date (student_id, course_id, attendance_date),
|
|
|
|
|
|
FOREIGN KEY (student_id) REFERENCES student(id) ON DELETE CASCADE,
|
|
|
|
|
|
FOREIGN KEY (course_id) REFERENCES course(id) ON DELETE CASCADE,
|
|
|
|
|
|
FOREIGN KEY (created_by) REFERENCES teacher(id) ON DELETE CASCADE
|
2025-12-04 16:15:16 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2025-12-05 17:38:20 +08:00
|
|
|
|
老师-学生管理关系表 (teacher_student)
|
|
|
|
|
|
CREATE TABLE teacher_student (
|
2025-12-04 16:15:16 +08:00
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
2025-12-05 17:38:20 +08:00
|
|
|
|
teacher_id INT NOT NULL,
|
|
|
|
|
|
student_id INT NOT NULL,
|
|
|
|
|
|
relationship_type ENUM('ADVISOR', 'INSTRUCTOR') NOT NULL,
|
|
|
|
|
|
start_date DATE NOT NULL,
|
|
|
|
|
|
end_date DATE,
|
|
|
|
|
|
UNIQUE KEY uk_teacher_student (teacher_id, student_id, relationship_type),
|
|
|
|
|
|
FOREIGN KEY (teacher_id) REFERENCES teacher(id) ON DELETE CASCADE,
|
|
|
|
|
|
FOREIGN KEY (student_id) REFERENCES student(id) ON DELETE CASCADE
|
2025-12-04 16:15:16 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2025-12-05 17:38:20 +08:00
|
|
|
|
--系统日志表 (system_log)
|
|
|
|
|
|
CREATE TABLE system_log (
|
|
|
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
|
user_id INT NOT NULL,
|
|
|
|
|
|
action VARCHAR(100) NOT NULL,
|
|
|
|
|
|
target_type VARCHAR(50) NOT NULL,
|
|
|
|
|
|
target_id INT,
|
|
|
|
|
|
description TEXT,
|
|
|
|
|
|
ip_address VARCHAR(45),
|
|
|
|
|
|
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES user(id)
|
|
|
|
|
|
);
|
2025-12-04 16:15:16 +08:00
|
|
|
|
|
2025-12-05 17:38:20 +08:00
|
|
|
|
-- 以下是插入的数据
|
2025-12-04 16:15:16 +08:00
|
|
|
|
INSERT INTO user (username, password, role) VALUES
|
2025-12-05 17:38:20 +08:00
|
|
|
|
('admin', 'admin123', 'ADMIN'),
|
|
|
|
|
|
('teacher1', 'teacher123', 'TEACHER'),
|
|
|
|
|
|
('teacher2', 'teacher456', 'TEACHER'),
|
|
|
|
|
|
('student1', 'student123', 'STUDENT'),
|
|
|
|
|
|
('student2', 'student456', 'STUDENT'),
|
|
|
|
|
|
('student3', 'student789', 'STUDENT'),
|
|
|
|
|
|
('student4', 'student000', 'STUDENT');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO teacher (user_id, name, teacher_id, department, title) VALUES
|
|
|
|
|
|
(2, '张老师', 'T001', '计算机科学系', '副教授'),
|
|
|
|
|
|
(3, '李老师', 'T002', '软件工程系', '讲师');
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO student (user_id, name, student_id, class_name, major) VALUES
|
|
|
|
|
|
(4, '张三', 'S2024001', '计算机1班', '计算机科学与技术'),
|
|
|
|
|
|
(5, '李四', 'S2024002', '计算机1班', '计算机科学与技术'),
|
|
|
|
|
|
(6, '王五', 'S2024003', '软件工程1班', '软件工程'),
|
|
|
|
|
|
(7, '赵六', 'S2024004', '软件工程1班', '软件工程');
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO course (course_name, course_code, teacher_id, description) VALUES
|
|
|
|
|
|
('Java程序设计', 'CS001', 1, 'Java语言基础与面向对象编程'),
|
|
|
|
|
|
('数据库原理', 'CS002', 1, '数据库系统原理与应用'),
|
|
|
|
|
|
('Web开发技术', 'SE001', 2, '前端与后端Web开发技术'),
|
|
|
|
|
|
('软件工程', 'SE002', 2, '软件开发流程与方法论');
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO student_course (student_id, course_id, enroll_date, status) VALUES
|
|
|
|
|
|
-- 张三选课
|
|
|
|
|
|
(1, 1, '2024-09-01', 'ACTIVE'),
|
|
|
|
|
|
(1, 2, '2024-09-01', 'ACTIVE'),
|
|
|
|
|
|
-- 李四选课
|
|
|
|
|
|
(2, 1, '2024-09-01', 'ACTIVE'),
|
|
|
|
|
|
(2, 3, '2024-09-01', 'ACTIVE'),
|
|
|
|
|
|
-- 王五选课
|
|
|
|
|
|
(3, 3, '2024-09-01', 'ACTIVE'),
|
|
|
|
|
|
(3, 4, '2024-09-01', 'ACTIVE'),
|
|
|
|
|
|
-- 赵六选课
|
|
|
|
|
|
(4, 2, '2024-09-01', 'ACTIVE'),
|
|
|
|
|
|
(4, 4, '2024-09-01', 'ACTIVE');
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO attendance_record (student_id, course_id, attendance_date, attendance_time, status, remarks, created_by) VALUES
|
|
|
|
|
|
-- Java程序设计考勤记录
|
|
|
|
|
|
(1, 1, '2024-10-01', '08:30:00', 'PRESENT', '按时到课', 1),
|
|
|
|
|
|
(2, 1, '2024-10-01', '08:45:00', 'LATE', '迟到15分钟', 1),
|
|
|
|
|
|
(1, 1, '2024-10-08', '08:30:00', 'PRESENT', '', 1),
|
|
|
|
|
|
(2, 1, '2024-10-08', '08:30:00', 'ABSENT', '请假', 1),
|
|
|
|
|
|
|
|
|
|
|
|
-- 数据库原理考勤记录
|
|
|
|
|
|
(1, 2, '2024-10-02', '10:00:00', 'PRESENT', '', 1),
|
|
|
|
|
|
(4, 2, '2024-10-02', '10:00:00', 'PRESENT', '', 1),
|
|
|
|
|
|
|
|
|
|
|
|
-- Web开发技术考勤记录
|
|
|
|
|
|
(2, 3, '2024-10-03', '14:00:00', 'PRESENT', '', 2),
|
|
|
|
|
|
(3, 3, '2024-10-03', '14:10:00', 'LATE', '交通堵塞', 2),
|
|
|
|
|
|
|
|
|
|
|
|
-- 软件工程考勤记录
|
|
|
|
|
|
(3, 4, '2024-10-04', '16:00:00', 'PRESENT', '', 2),
|
|
|
|
|
|
(4, 4, '2024-10-04', '16:00:00', 'PRESENT', '', 2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO teacher_student (teacher_id, student_id, relationship_type, start_date) VALUES
|
|
|
|
|
|
-- 张老师管理计算机1班学生
|
|
|
|
|
|
(1, 1, 'ADVISOR', '2024-09-01'),
|
|
|
|
|
|
(1, 2, 'ADVISOR', '2024-09-01'),
|
|
|
|
|
|
-- 李老师管理软件工程1班学生
|
|
|
|
|
|
(2, 3, 'ADVISOR', '2024-09-01'),
|
|
|
|
|
|
(2, 4, 'ADVISOR', '2024-09-01'),
|
|
|
|
|
|
-- 授课关系
|
|
|
|
|
|
(1, 1, 'INSTRUCTOR', '2024-09-01'),
|
|
|
|
|
|
(1, 2, 'INSTRUCTOR', '2024-09-01'),
|
|
|
|
|
|
(1, 4, 'INSTRUCTOR', '2024-09-01'),
|
|
|
|
|
|
(2, 2, 'INSTRUCTOR', '2024-09-01'),
|
|
|
|
|
|
(2, 3, 'INSTRUCTOR', '2024-09-01'),
|
|
|
|
|
|
(2, 4, 'INSTRUCTOR', '2024-09-01');
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO system_log (user_id, action, target_type, target_id, description, ip_address) VALUES
|
|
|
|
|
|
(1, 'LOGIN', 'SYSTEM', NULL, '管理员登录系统', '192.168.1.100'),
|
|
|
|
|
|
(2, 'CREATE', 'ATTENDANCE', 1, '创建考勤记录', '192.168.1.101'),
|
|
|
|
|
|
(2, 'UPDATE', 'ATTENDANCE', 2, '更新考勤状态', '192.168.1.101'),
|
|
|
|
|
|
(3, 'CREATE', 'COURSE', 3, '创建新课程', '192.168.1.102'),
|
|
|
|
|
|
(1, 'DELETE', 'USER', 5, '删除用户', '192.168.1.100');
|