266 lines
13 KiB
SQL
266 lines
13 KiB
SQL
-- 创建实训平台教学管理相关表
|
||
-- 作者: 王志维
|
||
-- 创建时间: 2026-04-30
|
||
|
||
SET NAMES utf8mb4;
|
||
SET FOREIGN_KEY_CHECKS = 0;
|
||
|
||
-- 1. 用户角色关联表
|
||
DROP TABLE IF EXISTS `sys_user_role`;
|
||
CREATE TABLE `sys_user_role` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
|
||
`role_code` VARCHAR(50) NOT NULL COMMENT '角色编码:student-学生,teacher-老师,admin-管理员',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_role` (`user_id`, `role_code`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_role_code` (`role_code`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
|
||
|
||
-- 2. 学生扩展表
|
||
DROP TABLE IF EXISTS `edu_student`;
|
||
CREATE TABLE `edu_student` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`user_id` BIGINT(20) NOT NULL COMMENT '用户ID(关联sys_user)',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID',
|
||
`college_id` BIGINT(20) DEFAULT NULL COMMENT '学院ID',
|
||
`major_id` BIGINT(20) DEFAULT NULL COMMENT '专业ID',
|
||
`grade` VARCHAR(20) DEFAULT NULL COMMENT '年级',
|
||
`class_name` VARCHAR(50) DEFAULT NULL COMMENT '班级',
|
||
`student_no` VARCHAR(50) DEFAULT NULL COMMENT '学号',
|
||
`real_name` VARCHAR(50) DEFAULT NULL COMMENT '真实姓名',
|
||
`activation_code` VARCHAR(50) DEFAULT NULL COMMENT '激活码',
|
||
`binding_status` TINYINT(1) DEFAULT '0' COMMENT '绑定状态:0-未绑定,1-已绑定',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_id` (`user_id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_college_id` (`college_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生扩展表';
|
||
|
||
-- 3. 教师扩展表
|
||
DROP TABLE IF EXISTS `edu_teacher`;
|
||
CREATE TABLE `edu_teacher` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`user_id` BIGINT(20) NOT NULL COMMENT '用户ID(关联sys_user)',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID',
|
||
`college_id` BIGINT(20) DEFAULT NULL COMMENT '学院ID',
|
||
`real_name` VARCHAR(50) DEFAULT NULL COMMENT '真实姓名',
|
||
`teacher_no` VARCHAR(50) DEFAULT NULL COMMENT '教师编号',
|
||
`title` VARCHAR(50) DEFAULT NULL COMMENT '职称',
|
||
`activation_code` VARCHAR(50) DEFAULT NULL COMMENT '激活码',
|
||
`binding_status` TINYINT(1) DEFAULT '0' COMMENT '绑定状态:0-未绑定,1-已绑定',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_id` (`user_id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_college_id` (`college_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师扩展表';
|
||
|
||
-- 4. 通知表
|
||
DROP TABLE IF EXISTS `sys_notification`;
|
||
CREATE TABLE `sys_notification` (
|
||
`id` BIGINT NOT NULL COMMENT '主键ID',
|
||
`school_id` BIGINT DEFAULT NULL COMMENT '学校ID',
|
||
`user_id` BIGINT DEFAULT NULL COMMENT '接收用户ID',
|
||
`title` VARCHAR(255) DEFAULT NULL COMMENT '通知标题',
|
||
`content` TEXT COMMENT '通知内容',
|
||
`type` TINYINT DEFAULT NULL COMMENT '通知类型',
|
||
`is_read` TINYINT DEFAULT '0' COMMENT '是否已读 0未读 1已读',
|
||
`sender_id` BIGINT DEFAULT NULL COMMENT '发送人ID',
|
||
`sender_name` VARCHAR(64) DEFAULT NULL COMMENT '发送人姓名',
|
||
`target_type` TINYINT DEFAULT NULL COMMENT '目标类型',
|
||
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
|
||
PRIMARY KEY (`id`) USING BTREE,
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_school_id` (`school_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知表';
|
||
|
||
-- 5. 课程表
|
||
DROP TABLE IF EXISTS `edu_course`;
|
||
CREATE TABLE `edu_course` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '课程名称',
|
||
`cover` VARCHAR(255) DEFAULT NULL COMMENT '课程封面',
|
||
`description` TEXT DEFAULT NULL COMMENT '课程简介',
|
||
`class_time` VARCHAR(100) DEFAULT NULL COMMENT '上课时间',
|
||
`teaching_method` TINYINT(1) DEFAULT '1' COMMENT '授课方式:1-线上,2-线下,3-混合',
|
||
`teacher_id` BIGINT(20) NOT NULL COMMENT '创建老师ID',
|
||
`status` TINYINT(1) DEFAULT '1' COMMENT '课程状态:1-进行中,2-已结课',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_teacher_id` (`teacher_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程表';
|
||
|
||
-- 6. 课程学生关联表
|
||
DROP TABLE IF EXISTS `edu_course_student`;
|
||
CREATE TABLE `edu_course_student` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`course_id` BIGINT(20) NOT NULL COMMENT '课程ID',
|
||
`student_id` BIGINT(20) NOT NULL COMMENT '学生ID',
|
||
`join_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间',
|
||
`is_kicked` TINYINT(1) DEFAULT '0' COMMENT '是否被踢出:0-正常,1-已踢出',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_course_student` (`course_id`, `student_id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_course_id` (`course_id`),
|
||
KEY `idx_student_id` (`student_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程学生关联表';
|
||
|
||
-- 7. 作业表
|
||
DROP TABLE IF EXISTS `edu_homework`;
|
||
CREATE TABLE `edu_homework` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`course_id` BIGINT(20) NOT NULL COMMENT '课程ID',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '作业名称',
|
||
`requirement` TEXT DEFAULT NULL COMMENT '作业要求',
|
||
`questions` TEXT NOT NULL COMMENT '题目JSON',
|
||
`allow_late` TINYINT(1) DEFAULT '0' COMMENT '是否允许迟交',
|
||
`start_time` DATETIME NOT NULL COMMENT '开始时间',
|
||
`end_time` DATETIME NOT NULL COMMENT '截止时间',
|
||
`status` TINYINT(1) DEFAULT '1' COMMENT '状态:1-草稿,2-已发布',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_course_id` (`course_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='作业表';
|
||
|
||
-- 8. 作业提交表
|
||
DROP TABLE IF EXISTS `edu_homework_submit`;
|
||
CREATE TABLE `edu_homework_submit` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`homework_id` BIGINT(20) NOT NULL COMMENT '作业ID',
|
||
`student_id` BIGINT(20) NOT NULL COMMENT '学生ID',
|
||
`answers` TEXT NOT NULL COMMENT '答案JSON',
|
||
`submit_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
|
||
`is_late` TINYINT(1) DEFAULT '0' COMMENT '是否迟交',
|
||
`status` TINYINT(1) DEFAULT '1' COMMENT '状态:1-待批改,2-已批改,3-已退回',
|
||
`score` DECIMAL(5,2) DEFAULT NULL COMMENT '分数',
|
||
`comment` TEXT DEFAULT NULL COMMENT '评语',
|
||
`is_excellent` TINYINT(1) DEFAULT '0' COMMENT '是否优秀',
|
||
`redo_end_time` DATETIME DEFAULT NULL COMMENT '重做截止时间',
|
||
`redo_count` INT(11) DEFAULT '0' COMMENT '重做次数',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_homework_id` (`homework_id`),
|
||
KEY `idx_student_id` (`student_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='作业提交表';
|
||
|
||
-- 9. 考试表
|
||
DROP TABLE IF EXISTS `edu_exam`;
|
||
CREATE TABLE `edu_exam` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`course_id` BIGINT(20) NOT NULL COMMENT '课程ID',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '考试名称',
|
||
`requirement` TEXT DEFAULT NULL COMMENT '考试要求',
|
||
`questions` TEXT NOT NULL COMMENT '考卷JSON',
|
||
`duration` INT(11) NOT NULL COMMENT '考试时长(分钟)',
|
||
`start_time` DATETIME NOT NULL COMMENT '开始时间',
|
||
`end_time` DATETIME NOT NULL COMMENT '截止时间',
|
||
`status` TINYINT(1) DEFAULT '1' COMMENT '状态:1-草稿,2-已发布,3-已结束',
|
||
`is_makeup` TINYINT(1) DEFAULT '0' COMMENT '是否补考',
|
||
`parent_exam_id` BIGINT(20) DEFAULT NULL COMMENT '关联主考ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_course_id` (`course_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考试表';
|
||
|
||
-- 10. 考试答卷表
|
||
DROP TABLE IF EXISTS `edu_exam_paper`;
|
||
CREATE TABLE `edu_exam_paper` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`exam_id` BIGINT(20) NOT NULL COMMENT '考试ID',
|
||
`student_id` BIGINT(20) NOT NULL COMMENT '学生ID',
|
||
`answers` TEXT NOT NULL COMMENT '答案JSON',
|
||
`submit_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
|
||
`status` TINYINT(1) DEFAULT '1' COMMENT '状态:1-待阅卷,2-已阅卷',
|
||
`score` DECIMAL(5,2) DEFAULT NULL COMMENT '分数',
|
||
`comment` TEXT DEFAULT NULL COMMENT '评语',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_exam_student` (`exam_id`, `student_id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_exam_id` (`exam_id`),
|
||
KEY `idx_student_id` (`student_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考试答卷表';
|
||
|
||
-- 11. 考勤表
|
||
DROP TABLE IF EXISTS `edu_attendance`;
|
||
CREATE TABLE `edu_attendance` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`course_id` BIGINT(20) NOT NULL COMMENT '课程ID',
|
||
`name` VARCHAR(100) DEFAULT NULL COMMENT '签到名称(按时间自动生成)',
|
||
`start_time` DATETIME NOT NULL COMMENT '开始时间',
|
||
`duration` INT(11) DEFAULT '15' COMMENT '签到时长(分钟)',
|
||
`type` TINYINT(1) DEFAULT '1' COMMENT '签到类型:1-二维码签到,2-手动点名',
|
||
`status` TINYINT(1) DEFAULT '1' COMMENT '状态:1-进行中,2-已结束',
|
||
`qr_code` VARCHAR(255) DEFAULT NULL COMMENT '二维码内容',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_course_id` (`course_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤表';
|
||
|
||
-- 12. 考勤记录表
|
||
DROP TABLE IF EXISTS `edu_attendance_record`;
|
||
CREATE TABLE `edu_attendance_record` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`attendance_id` BIGINT(20) NOT NULL COMMENT '考勤ID',
|
||
`student_id` BIGINT(20) NOT NULL COMMENT '学生ID',
|
||
`status` TINYINT(1) DEFAULT '1' COMMENT '考勤状态:1-出勤,2-迟到,3-缺勤,4-请假',
|
||
`sign_time` DATETIME DEFAULT NULL COMMENT '签到时间',
|
||
`remark` VARCHAR(255) DEFAULT NULL COMMENT '备注(手动点名时填写)',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_attendance_student` (`attendance_id`, `student_id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_attendance_id` (`attendance_id`),
|
||
KEY `idx_student_id` (`student_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤记录表';
|
||
|
||
-- 13. 优秀作品表
|
||
DROP TABLE IF EXISTS `edu_excellent_work`;
|
||
CREATE TABLE `edu_excellent_work` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`work_type` TINYINT(1) NOT NULL COMMENT '作品类型:1-作业,2-考试',
|
||
`work_id` BIGINT(20) NOT NULL COMMENT '关联作业/考试ID',
|
||
`submit_id` BIGINT(20) NOT NULL COMMENT '关联提交ID',
|
||
`student_id` BIGINT(20) NOT NULL COMMENT '学生ID',
|
||
`score` DECIMAL(5,2) DEFAULT NULL COMMENT '分数',
|
||
`comment` TEXT DEFAULT NULL COMMENT '评语',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '标记时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_school_id` (`school_id`),
|
||
KEY `idx_work_type_work_id` (`work_type`, `work_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优秀作品表';
|
||
|
||
-- 14. 作品点赞表
|
||
DROP TABLE IF EXISTS `edu_work_like`;
|
||
CREATE TABLE `edu_work_like` (
|
||
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||
`school_id` BIGINT(20) NOT NULL COMMENT '学校ID(数据隔离)',
|
||
`work_id` BIGINT(20) NOT NULL COMMENT '优秀作品ID',
|
||
`user_id` BIGINT(20) NOT NULL COMMENT '点赞用户ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '点赞时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_work_user` (`work_id`, `user_id`),
|
||
KEY `idx_school_id` (`school_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='作品点赞表';
|
||
|
||
SET FOREIGN_KEY_CHECKS = 1; |