学生换班级记录表设计说明
📋 文档说明
版本: v1.0.0
制定时间: 2025-01-25
适用范围: 学生换班级业务模块
重要性: ⚠️ 核心业务表 - 记录所有学生换班级操作的历史数据
🎯 设计目标
1. 业务需求
- 记录完整历史: 记录学生换班级的完整过程和历史数据
- 支持审批流程: 包含换班级的申请、审批、执行全流程
- 数据追溯: 提供完整的换班级操作审计和追溯能力
- 业务统计: 支持换班级数据的统计分析和报表生成
2. 技术要求
- 数据完整性: 遵循项目数据库设计规范
- 性能优化: 合理的索引设计,支持高效查询
- 扩展性: 预留扩展字段,支持未来功能需求
- 安全性: 多租户隔离,完整的审计追踪
🗄️ 表结构设计
表名:xg_student_class_change
字段分类说明
🔴 强制基础字段(必须)
| 字段名 |
类型 |
默认值 |
说明 |
id |
bigint(20) |
- |
主键ID(雪花ID) |
tenant_id |
varchar(20) |
'000000' |
租户编号 |
create_dept |
bigint(20) |
NULL |
创建部门 |
create_by |
bigint(20) |
NULL |
创建者 |
create_time |
datetime |
NULL |
创建时间 |
update_by |
bigint(20) |
NULL |
更新者 |
update_time |
datetime |
NULL |
更新时间 |
deleted |
tinyint(1) |
0 |
删除标志(0存在 1删除) |
👤 学生基本信息
| 字段名 |
类型 |
默认值 |
说明 |
student_id |
bigint(20) |
- |
学生ID,关联xg_student_msg.id |
student_no |
varchar(32) |
- |
学号 |
student_name |
varchar(50) |
- |
学生姓名 |
📚 原班级信息
| 字段名 |
类型 |
默认值 |
说明 |
original_college_id |
bigint(20) |
NULL |
原学院ID,关联sys_dept.dept_id |
original_college_name |
varchar(100) |
NULL |
原学院名称 |
original_major_id |
bigint(20) |
NULL |
原专业ID,关联xg_major_msg.id |
original_major_name |
varchar(100) |
NULL |
原专业名称 |
original_class_id |
bigint(20) |
NULL |
原班级ID,关联xg_class_msg.id |
original_class_code |
varchar(32) |
NULL |
原班级代码 |
original_class_name |
varchar(100) |
NULL |
原班级名称 |
📚 新班级信息
| 字段名 |
类型 |
默认值 |
说明 |
new_college_id |
bigint(20) |
NULL |
新学院ID,关联sys_dept.dept_id |
new_college_name |
varchar(100) |
NULL |
新学院名称 |
new_major_id |
bigint(20) |
NULL |
新专业ID,关联xg_major_msg.id |
new_major_name |
varchar(100) |
NULL |
新专业名称 |
new_class_id |
bigint(20) |
NULL |
新班级ID,关联xg_class_msg.id |
new_class_code |
varchar(32) |
NULL |
新班级代码 |
new_class_name |
varchar(100) |
NULL |
新班级名称 |
🔄 换班级业务信息
| 字段名 |
类型 |
默认值 |
说明 |
change_reason |
varchar(500) |
NULL |
换班级原因 |
change_type |
char(1) |
'1' |
换班级类型:1-主动申请,2-学校调整,3-专业调整,4-其他 |
change_time |
datetime |
NULL |
换班级时间 |
effective_time |
datetime |
NULL |
生效时间 |
status |
char(1) |
'0' |
处理状态:0-未处理,1-已处理 |
✅ 审批流程信息
| 字段名 |
类型 |
默认值 |
说明 |
approval_status |
char(1) |
'0' |
审批状态:0-待审批,1-审批通过,2-审批拒绝,3-已撤销 |
approval_by |
bigint(20) |
NULL |
审批人ID |
approval_time |
datetime |
NULL |
审批时间 |
approval_remarks |
varchar(500) |
NULL |
审批备注 |
📎 附件信息
| 字段名 |
类型 |
默认值 |
说明 |
attachment_ids |
text |
NULL |
附件文件ID(逗号分隔) |
📝 扩展字段
| 字段名 |
类型 |
默认值 |
说明 |
remark |
varchar(500) |
NULL |
备注 |
🔍 索引设计
基础索引(必须)
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_create_time` (`create_time`),
KEY `idx_tenant_deleted` (`tenant_id`, `deleted`)
业务索引
KEY `idx_student_id` (`student_id`),
KEY `idx_student_no` (`student_no`),
KEY `idx_original_class_id` (`original_class_id`),
KEY `idx_new_class_id` (`new_class_id`),
KEY `idx_change_time` (`change_time`),
KEY `idx_effective_time` (`effective_time`),
KEY `idx_approval_status` (`approval_status`)
唯一约束
UNIQUE KEY `uk_student_change_time` (`student_id`, `change_time`, `tenant_id`, `deleted`)
🔄 业务流程
1. 换班级申请流程
学生申请 → 提交申请 → 管理员处理 → 执行换班级
2. 数据状态流转
未处理(0) → 已处理(1) → 执行换班级 → 生效
3. 换班级类型说明
| 类型代码 |
类型名称 |
说明 |
| 1 |
主动申请 |
学生主动提出换班级申请 |
| 2 |
学校调整 |
学校根据教学需要调整班级 |
| 3 |
专业调整 |
学生转专业导致班级变化 |
| 4 |
其他 |
其他特殊情况 |
📊 数据关联关系
关联表说明
- xg_student_msg: 学生信息表(通过student_id关联)
- xg_class_msg: 班级信息表(通过original_class_id、new_class_id关联)
- xg_major_msg: 专业信息表(通过original_major_id、new_major_id关联)
- sys_dept: 部门信息表(通过original_college_id、new_college_id关联)
- sys_user: 用户信息表(通过create_by、update_by、approval_by关联)
注意事项
⚠️ 不使用数据库外键约束:所有关联关系通过应用层逻辑维护
📈 统计分析支持
支持的统计维度
- 按时间统计: 换班级数量趋势分析
- 按原因统计: 换班级原因分布统计
- 按班级统计: 各班级换班级情况统计
- 按审批状态: 换班级申请处理情况统计
- 按操作人: 换班级操作人员工作量统计
示例统计SQL
-- 按月份统计换班级数量
SELECT
DATE_FORMAT(change_time, '%Y-%m') AS month,
COUNT(*) AS change_count
FROM xg_student_class_change
WHERE deleted = 0 AND approval_status = '1'
GROUP BY DATE_FORMAT(change_time, '%Y-%m')
ORDER BY month;
-- 按原因统计换班级分布
SELECT
change_type,
COUNT(*) AS count
FROM xg_student_class_change
WHERE deleted = 0 AND approval_status = '1'
GROUP BY change_type;
🔒 安全考虑
数据安全
- 多租户隔离: 通过tenant_id实现数据隔离
- 权限控制: 基于角色的数据访问控制
- 操作审计: 完整的操作日志记录
- 数据加密: 敏感信息加密存储
业务安全
- 审批流程: 多级审批确保操作合规
- 数据校验: 换班级前进行业务规则校验
- 操作限制: 防止重复换班级和无效操作
- 回滚机制: 支持换班级操作的回滚
🚀 使用说明
数据插入规范
INSERT INTO xg_student_class_change (
id, tenant_id, create_by, create_time,
student_id, student_no, student_name,
original_class_id, original_class_name,
new_class_id, new_class_name,
change_reason, change_type, change_time,
approval_status
) VALUES (
雪花ID, '000000', 操作人ID, NOW(),
学生ID, '学号', '学生姓名',
原班级ID, '原班级名称',
新班级ID, '新班级名称',
'换班级原因', '1', NOW(),
'0' -- 待审批状态
);
查询优化建议
- 分页查询: 大数据量时必须分页
- 索引使用: 充分利用业务索引提升查询性能
- 关联查询: 注意避免复杂的多表关联查询
- 缓存策略: 对常用数据进行适当缓存
📞 维护说明
定期维护任务
- 数据清理: 定期清理已删除的历史数据
- 索引优化: 定期检查和优化索引性能
- 统计更新: 定期更新统计数据
- 备份策略: 定期备份重要数据
扩展规划
- 字段扩展: 预留扩展字段用于未来需求
- 流程优化: 支持更复杂的审批流程
- 自动化: 支持自动换班级处理
- 集成: 与教务系统深度集成
⚠️ 重要提醒
- 数据一致性: 换班级操作必须确保数据的一致性
- 业务规则: 严格遵守学校的换班级管理规定
- 审批流程: 必须经过完整的审批流程
- 文档同步: 代码变更必须同步更新相关文档
- 测试验证: 新功能必须经过充分的测试验证
最后更新: 2025-01-25
维护人员: AI Assistant
联系方式: 项目技术团队