- 新增数据库表结构脚本:edu_schema.sql,定义教育模块数据表 - 新增权限初始化脚本:edu_auth_init.sql,配置模块权限和菜单 - 新增系统设计文档:学生选课管理系统设计说明.md,详细说明系统架构和功能 - 完善项目文档结构,便于开发和维护
221 lines
15 KiB
SQL
221 lines
15 KiB
SQL
-- ------------------------------------------------------------
|
||
-- 学生选课管理系统 - 业务数据结构初始化脚本
|
||
-- 依赖基础库:RuoYi-Vue 3.9.0(ry_20250522.sql)
|
||
-- ------------------------------------------------------------
|
||
|
||
-- 1. 学期信息表
|
||
DROP TABLE IF EXISTS edu_semester;
|
||
CREATE TABLE edu_semester (
|
||
semester_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '学期ID',
|
||
semester_code VARCHAR(20) NOT NULL COMMENT '学期编码,例如 2024-2025-1',
|
||
semester_name VARCHAR(50) NOT NULL COMMENT '学期名称',
|
||
start_date DATE NOT NULL COMMENT '教学开始日期',
|
||
end_date DATE NOT NULL COMMENT '教学结束日期',
|
||
enroll_start_time DATETIME NOT NULL COMMENT '统一选课开始时间',
|
||
enroll_end_time DATETIME NOT NULL COMMENT '统一选课结束时间',
|
||
status CHAR(1) DEFAULT '0' COMMENT '状态(0草稿 1进行中 2已归档)',
|
||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (semester_id),
|
||
UNIQUE KEY uk_semester_code (semester_code)
|
||
) ENGINE=InnoDB COMMENT='学期信息表';
|
||
|
||
-- 2. 学生档案表
|
||
DROP TABLE IF EXISTS edu_student;
|
||
CREATE TABLE edu_student (
|
||
student_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '学生ID',
|
||
user_id BIGINT(20) NOT NULL COMMENT '关联系统用户ID',
|
||
student_no VARCHAR(30) NOT NULL COMMENT '学号',
|
||
real_name VARCHAR(50) NOT NULL COMMENT '姓名',
|
||
gender CHAR(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)',
|
||
dept_id BIGINT(20) DEFAULT NULL COMMENT '院系部门ID(关联sys_dept)',
|
||
major VARCHAR(100) DEFAULT NULL COMMENT '专业名称',
|
||
grade VARCHAR(20) DEFAULT NULL COMMENT '年级,例如2022',
|
||
class_name VARCHAR(50) DEFAULT NULL COMMENT '行政班',
|
||
enroll_year VARCHAR(10) DEFAULT NULL COMMENT '入学年份',
|
||
contact_phone VARCHAR(20) DEFAULT NULL COMMENT '联系方式',
|
||
contact_email VARCHAR(50) DEFAULT NULL COMMENT '联系邮箱',
|
||
status CHAR(1) DEFAULT '0' COMMENT '学籍状态(0在籍 1休学 2退学)',
|
||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (student_id),
|
||
UNIQUE KEY uk_student_no (student_no),
|
||
UNIQUE KEY uk_student_user (user_id)
|
||
) ENGINE=InnoDB COMMENT='学生档案表';
|
||
|
||
-- 3. 教师档案表
|
||
DROP TABLE IF EXISTS edu_teacher;
|
||
CREATE TABLE edu_teacher (
|
||
teacher_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '教师ID',
|
||
user_id BIGINT(20) NOT NULL COMMENT '关联系统用户ID',
|
||
teacher_no VARCHAR(30) NOT NULL COMMENT '工号',
|
||
real_name VARCHAR(50) NOT NULL COMMENT '姓名',
|
||
gender CHAR(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)',
|
||
dept_id BIGINT(20) DEFAULT NULL COMMENT '所属院系(关联sys_dept)',
|
||
title VARCHAR(50) DEFAULT NULL COMMENT '职称',
|
||
contact_phone VARCHAR(20) DEFAULT NULL COMMENT '联系方式',
|
||
contact_email VARCHAR(50) DEFAULT NULL COMMENT '联系邮箱',
|
||
entry_date DATE DEFAULT NULL COMMENT '入职日期',
|
||
status CHAR(1) DEFAULT '0' COMMENT '任职状态(0在职 1离职 2停职)',
|
||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (teacher_id),
|
||
UNIQUE KEY uk_teacher_no (teacher_no),
|
||
UNIQUE KEY uk_teacher_user (user_id)
|
||
) ENGINE=InnoDB COMMENT='教师档案表';
|
||
|
||
-- 4. 教室信息表
|
||
DROP TABLE IF EXISTS edu_classroom;
|
||
CREATE TABLE edu_classroom (
|
||
classroom_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '教室ID',
|
||
building VARCHAR(100) DEFAULT '' COMMENT '楼宇',
|
||
room_no VARCHAR(30) NOT NULL COMMENT '教室编号',
|
||
capacity INT(6) DEFAULT 0 COMMENT '容量',
|
||
room_type VARCHAR(20) DEFAULT 'theory' COMMENT '教室类型(theory理论 lab实验 multi多媒体)',
|
||
status CHAR(1) DEFAULT '0' COMMENT '状态(0可用 1停用)',
|
||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (classroom_id),
|
||
UNIQUE KEY uk_room (building, room_no)
|
||
) ENGINE=InnoDB COMMENT='教室信息表';
|
||
|
||
-- 5. 课程信息表
|
||
DROP TABLE IF EXISTS edu_course;
|
||
CREATE TABLE edu_course (
|
||
course_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '课程ID',
|
||
course_code VARCHAR(30) NOT NULL COMMENT '课程编码',
|
||
course_name VARCHAR(100) NOT NULL COMMENT '课程名称',
|
||
course_type VARCHAR(20) DEFAULT 'elective' COMMENT '课程类型(字典:edu_course_type)',
|
||
credit DECIMAL(4,1) DEFAULT 0 COMMENT '学分',
|
||
total_hours INT(4) DEFAULT 0 COMMENT '总学时',
|
||
theory_hours INT(4) DEFAULT 0 COMMENT '理论学时',
|
||
practice_hours INT(4) DEFAULT 0 COMMENT '实验学时',
|
||
dept_id BIGINT(20) DEFAULT NULL COMMENT '开课院系(关联sys_dept)',
|
||
status CHAR(1) DEFAULT '0' COMMENT '状态(0启用 1停用)',
|
||
description VARCHAR(500) DEFAULT NULL COMMENT '课程简介',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (course_id),
|
||
UNIQUE KEY uk_course_code (course_code)
|
||
) ENGINE=InnoDB COMMENT='课程信息表';
|
||
|
||
-- 6. 开课计划表
|
||
DROP TABLE IF EXISTS edu_course_class;
|
||
CREATE TABLE edu_course_class (
|
||
class_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '开课ID',
|
||
course_id BIGINT(20) NOT NULL COMMENT '课程ID',
|
||
semester_id BIGINT(20) NOT NULL COMMENT '学期ID',
|
||
teacher_id BIGINT(20) NOT NULL COMMENT '授课教师ID',
|
||
class_code VARCHAR(30) NOT NULL COMMENT '班级编号',
|
||
capacity INT(4) NOT NULL DEFAULT 50 COMMENT '容量上限',
|
||
enroll_limit INT(4) DEFAULT 0 COMMENT '选课人数上限,0表示同容量',
|
||
enrolled_count INT(4) DEFAULT 0 COMMENT '已选人数',
|
||
classroom_id BIGINT(20) DEFAULT NULL COMMENT '授课教室',
|
||
enroll_start_time DATETIME DEFAULT NULL COMMENT '选课开始时间',
|
||
enroll_end_time DATETIME DEFAULT NULL COMMENT '选课结束时间',
|
||
teach_start_date DATE DEFAULT NULL COMMENT '开课日期',
|
||
teach_end_date DATE DEFAULT NULL COMMENT '结课日期',
|
||
weekday VARCHAR(20) DEFAULT NULL COMMENT '上课星期描述,例如 周一',
|
||
time_slot VARCHAR(50) DEFAULT NULL COMMENT '上课节次描述,例如 第1-2节',
|
||
status CHAR(1) DEFAULT '0' COMMENT '状态(0待发布 1可选课 2已满额 3已结课)',
|
||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (class_id),
|
||
UNIQUE KEY uk_class_code (class_code),
|
||
KEY idx_class_course (course_id),
|
||
KEY idx_class_semester (semester_id),
|
||
KEY idx_class_teacher (teacher_id)
|
||
) ENGINE=InnoDB COMMENT='开课计划表';
|
||
|
||
-- 7. 节次安排表
|
||
DROP TABLE IF EXISTS edu_course_schedule;
|
||
CREATE TABLE edu_course_schedule (
|
||
schedule_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '节次ID',
|
||
class_id BIGINT(20) NOT NULL COMMENT '开课ID',
|
||
weekday TINYINT(2) NOT NULL COMMENT '周几(1-7)',
|
||
period_start TINYINT(2) NOT NULL COMMENT '开始节次',
|
||
period_end TINYINT(2) NOT NULL COMMENT '结束节次',
|
||
weeks VARCHAR(100) DEFAULT NULL COMMENT '上课周次,例如 1-16',
|
||
classroom_id BIGINT(20) DEFAULT NULL COMMENT '教室ID',
|
||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (schedule_id),
|
||
KEY idx_schedule_class (class_id)
|
||
) ENGINE=InnoDB COMMENT='开课节次安排表';
|
||
|
||
-- 8. 选课记录表
|
||
DROP TABLE IF EXISTS edu_enrollment;
|
||
CREATE TABLE edu_enrollment (
|
||
enrollment_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '选课记录ID',
|
||
class_id BIGINT(20) NOT NULL COMMENT '开课ID',
|
||
student_id BIGINT(20) NOT NULL COMMENT '学生ID',
|
||
select_time DATETIME NOT NULL COMMENT '选课时间',
|
||
status CHAR(1) DEFAULT '0' COMMENT '记录状态(0已选 1已退)',
|
||
drop_time DATETIME DEFAULT NULL COMMENT '退课时间',
|
||
score DECIMAL(5,2) DEFAULT NULL COMMENT '课程成绩',
|
||
eval_status CHAR(1) DEFAULT '0' COMMENT '评价状态(0未评 1已评)',
|
||
remark VARCHAR(255) DEFAULT NULL COMMENT '备注',
|
||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||
create_time DATETIME COMMENT '创建时间',
|
||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||
update_time DATETIME COMMENT '更新时间',
|
||
PRIMARY KEY (enrollment_id),
|
||
UNIQUE KEY uk_enrollment (class_id, student_id),
|
||
KEY idx_enroll_student (student_id),
|
||
KEY idx_enroll_status (status)
|
||
) ENGINE=InnoDB COMMENT='选课记录表';
|
||
|
||
-- 9. 字典类型扩展
|
||
INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, status, create_by, create_time, remark) VALUES
|
||
(11, '学期状态', 'edu_semester_status', '0', 'admin', SYSDATE(), '学期状态字典'),
|
||
(12, '课程类型', 'edu_course_type', '0', 'admin', SYSDATE(), '课程类型字典'),
|
||
(13, '开课状态', 'edu_course_class_status', '0', 'admin', SYSDATE(), '开课计划状态字典'),
|
||
(14, '学籍状态', 'edu_student_status', '0', 'admin', SYSDATE(), '学生状态字典'),
|
||
(15, '教师状态', 'edu_teacher_status', '0', 'admin', SYSDATE(), '教师状态字典'),
|
||
(16, '选课记录状态', 'edu_enrollment_status', '0', 'admin', SYSDATE(), '选课记录状态字典'),
|
||
(17, '教室类型', 'edu_classroom_type', '0', 'admin', SYSDATE(), '教室类型字典');
|
||
|
||
-- 10. 字典数据扩展
|
||
INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark) VALUES
|
||
(30, 1, '草稿', '0', 'edu_semester_status', 'Y', '0', 'admin', SYSDATE(), '未发布'),
|
||
(31, 2, '进行中', '1', 'edu_semester_status', 'N', '0', 'admin', SYSDATE(), '当前学期'),
|
||
(32, 3, '已归档', '2', 'edu_semester_status', 'N', '0', 'admin', SYSDATE(), '历史学期'),
|
||
(33, 1, '必修课', 'required', 'edu_course_type', 'Y', '0', 'admin', SYSDATE(), ''),
|
||
(34, 2, '选修课', 'elective', 'edu_course_type', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(35, 3, '公选课', 'public', 'edu_course_type', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(36, 1, '待发布', '0', 'edu_course_class_status', 'Y', '0', 'admin', SYSDATE(), ''),
|
||
(37, 2, '可选课', '1', 'edu_course_class_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(38, 3, '已满额', '2', 'edu_course_class_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(39, 4, '已结课', '3', 'edu_course_class_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(40, 1, '在籍', '0', 'edu_student_status', 'Y', '0', 'admin', SYSDATE(), ''),
|
||
(41, 2, '休学', '1', 'edu_student_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(42, 3, '退学', '2', 'edu_student_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(43, 1, '在职', '0', 'edu_teacher_status', 'Y', '0', 'admin', SYSDATE(), ''),
|
||
(44, 2, '离职', '1', 'edu_teacher_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(45, 3, '停职', '2', 'edu_teacher_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(46, 1, '已选', '0', 'edu_enrollment_status', 'Y', '0', 'admin', SYSDATE(), ''),
|
||
(47, 2, '已退', '1', 'edu_enrollment_status', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(48, 1, '理论课', 'theory', 'edu_classroom_type', 'Y', '0', 'admin', SYSDATE(), ''),
|
||
(49, 2, '实验室', 'lab', 'edu_classroom_type', 'N', '0', 'admin', SYSDATE(), ''),
|
||
(50, 3, '多媒体', 'multi', 'edu_classroom_type', 'N', '0', 'admin', SYSDATE(), '');
|