Files
hzdyjs/学生换班级/学生换班级记录表设计说明.md
2025-12-25 18:01:27 +08:00

8.8 KiB
Raw Permalink Blame History

学生换班级记录表设计说明

📋 文档说明

版本: 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关联)

注意事项

⚠️ 不使用数据库外键约束:所有关联关系通过应用层逻辑维护


📈 统计分析支持

支持的统计维度

  1. 按时间统计: 换班级数量趋势分析
  2. 按原因统计: 换班级原因分布统计
  3. 按班级统计: 各班级换班级情况统计
  4. 按审批状态: 换班级申请处理情况统计
  5. 按操作人: 换班级操作人员工作量统计

示例统计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;

🔒 安全考虑

数据安全

  1. 多租户隔离: 通过tenant_id实现数据隔离
  2. 权限控制: 基于角色的数据访问控制
  3. 操作审计: 完整的操作日志记录
  4. 数据加密: 敏感信息加密存储

业务安全

  1. 审批流程: 多级审批确保操作合规
  2. 数据校验: 换班级前进行业务规则校验
  3. 操作限制: 防止重复换班级和无效操作
  4. 回滚机制: 支持换班级操作的回滚

🚀 使用说明

数据插入规范

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'  -- 待审批状态
);

查询优化建议

  1. 分页查询: 大数据量时必须分页
  2. 索引使用: 充分利用业务索引提升查询性能
  3. 关联查询: 注意避免复杂的多表关联查询
  4. 缓存策略: 对常用数据进行适当缓存

📞 维护说明

定期维护任务

  1. 数据清理: 定期清理已删除的历史数据
  2. 索引优化: 定期检查和优化索引性能
  3. 统计更新: 定期更新统计数据
  4. 备份策略: 定期备份重要数据

扩展规划

  1. 字段扩展: 预留扩展字段用于未来需求
  2. 流程优化: 支持更复杂的审批流程
  3. 自动化: 支持自动换班级处理
  4. 集成: 与教务系统深度集成

⚠️ 重要提醒

  1. 数据一致性: 换班级操作必须确保数据的一致性
  2. 业务规则: 严格遵守学校的换班级管理规定
  3. 审批流程: 必须经过完整的审批流程
  4. 文档同步: 代码变更必须同步更新相关文档
  5. 测试验证: 新功能必须经过充分的测试验证

最后更新: 2025-01-25 维护人员: AI Assistant 联系方式: 项目技术团队