学生请假数据库设计
📋 概述
本目录包含学生请假管理系统的数据库设计文件,包括请假类型配置表和请假记录表。
📁 文件结构
学生请假/
├── README.md # 本说明文档
├── xg_leave_type_config.sql # 请假类型配置表
├── xg_student_leave.sql # 学生请假表
└── xg_student_leave_sample_data.sql # 示例数据
🗄️ 数据表设计
1. 请假类型配置表 (xg_leave_type_config)
功能: 配置不同类型的请假规则和参数
主要字段:
leave_type_code: 请假类型编码(如:PERSONAL_LEAVE、SICK_LEAVE)leave_type_name: 请假类型名称(如:事假、病假)need_location_on_apply: 请假是否需要上传地理位置need_photo_on_cancel: 销假是否必须上传照片need_location_on_cancel: 销假是否需要上传地理位置need_cancel_for_non_leave: 非离校请假是否需要销假can_apply_in_advance: 是否可以提前请假max_apply_duration: 请假最大申请时长(天)cancel_overdue_reminder: 销假逾期提醒时长(天)
2. 学生请假表 (xg_student_leave)
功能: 记录学生的请假申请、审批和销假信息
主要字段:
基础信息
student_id: 学生IDstudent_name: 学生姓名student_no: 学号class_id/class_name: 班级信息major_id/major_name: 专业信息college_id/college_name: 学院信息
请假信息
leave_type_code/leave_type_name: 请假类型start_time/end_time: 开始/结束时间(年月日时分秒)leave_duration: 请假时长(天)is_leave_school: 是否离校(0-否,1-是)
联系信息
emergency_contact: 紧急联系人emergency_phone: 紧急联系电话
请假详情
leave_reason: 请假原因leave_location: 请假时地理位置attachment_oss_ids: 附件OSS文件ID(逗号分隔)
审批信息
approval_status: 审批状态(0-待审批,1-已通过,2-已拒绝,3-已取消)approval_opinion: 审批意见approval_time: 审批时间approval_by/approval_by_name: 审批人信息
销假信息
cancel_status: 销假状态(0-未销假,1-已销假,2-逾期未销假)cancel_time: 销假时间cancel_location: 销假地理位置cancel_photo_oss_ids: 销假照片OSS文件IDcancel_remark: 销假备注
🔍 索引设计
单列索引
- 租户索引:
idx_tenant_id - 学生索引:
idx_student_id student_no: 学号- 班级索引:
idx_class_id - 学院索引:
idx_college_id - 请假类型索引:
idx_leave_type_code - 时间索引:
idx_start_time、idx_end_time - 状态索引:
idx_approval_status、idx_cancel_status - 创建时间索引:
idx_create_time - 离校状态索引:
idx_is_leave_school
复合索引
- 学生+时间范围:
idx_student_time_range - 班级+审批状态:
idx_class_approval_status - 学院+请假类型:
idx_college_leave_type - 时间范围+审批状态:
idx_time_approval_status
📊 示例数据说明
示例数据包含8条不同类型的请假记录:
- 事假申请 - 已审批通过,未销假
- 病假申请 - 已审批通过,已销假
- 外出请假 - 待审批
- 回家请假 - 审批拒绝
- 其他请假 - 已审批通过,已销假
- 事假申请 - 待审批
- 病假申请 - 已审批通过,逾期未销假
- 外出请假 - 已取消
🔧 使用说明
1. 创建表结构
-- 先创建请假类型配置表
source xg_leave_type_config.sql;
-- 再创建学生请假表
source xg_student_leave.sql;
2. 插入示例数据
-- 插入示例数据(可选)
source xg_student_leave_sample_data.sql;
3. 常见查询示例
查询某个学生的请假记录
SELECT * FROM xg_student_leave
WHERE student_id = 10001
ORDER BY create_time DESC;
查询待审批的请假申请
SELECT * FROM xg_student_leave
WHERE approval_status = '0'
ORDER BY create_time ASC;
查询逾期未销假的记录
SELECT * FROM xg_student_leave
WHERE cancel_status = '2'
AND end_time < NOW();
按班级统计请假情况
SELECT
class_name,
COUNT(*) as total_count,
SUM(CASE WHEN approval_status = '1' THEN 1 ELSE 0 END) as approved_count,
SUM(CASE WHEN approval_status = '2' THEN 1 ELSE 0 END) as rejected_count
FROM xg_student_leave
WHERE create_time >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY class_id, class_name;
⚠️ 注意事项
- 基础字段规范: 所有表都包含统一的基础字段(id、tenant_id、create_dept等)
- 逻辑删除: 使用
deleted字段进行逻辑删除,禁止物理删除 - 多租户支持: 所有表都包含
tenant_id字段,支持多租户 - 外键约束: 外键约束已注释,可根据实际需要启用
- 字符集: 统一使用utf8mb4字符集,支持emoji等特殊字符
🔄 版本历史
- 2024-01-20: 初始版本,创建请假类型配置表和请假记录表
- 2024-01-21: 添加示例数据和查询示例
- 2024-01-22: 完善索引设计和文档说明