RuoYi-Vue-master/student/edu_schema.sql
Leo d9203524ab 新增学生选课管理系统相关文档和脚本
- 新增数据库表结构脚本:edu_schema.sql,定义教育模块数据表
- 新增权限初始化脚本:edu_auth_init.sql,配置模块权限和菜单
- 新增系统设计文档:学生选课管理系统设计说明.md,详细说明系统架构和功能
- 完善项目文档结构,便于开发和维护
2025-09-28 21:50:17 +08:00

221 lines
15 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ------------------------------------------------------------
-- 学生选课管理系统 - 业务数据结构初始化脚本
-- 依赖基础库RuoYi-Vue 3.9.0ry_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(), '');