zlwu adfbb74699 删除sql和md文件,减轻干扰 il y a 1 an
..
README.md 2e51d1154d 提交代码 il y a 1 an

README.md

学生请假数据库设计

📋 概述

本目录包含学生请假管理系统的数据库设计文件,包括请假类型配置表和请假记录表。

📁 文件结构

学生请假/
├── 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: 学生ID
  • student_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文件ID
  • cancel_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. 事假申请 - 已审批通过,未销假
  2. 病假申请 - 已审批通过,已销假
  3. 外出请假 - 待审批
  4. 回家请假 - 审批拒绝
  5. 其他请假 - 已审批通过,已销假
  6. 事假申请 - 待审批
  7. 病假申请 - 已审批通过,逾期未销假
  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;

⚠️ 注意事项

  1. 基础字段规范: 所有表都包含统一的基础字段(id、tenant_id、create_dept等)
  2. 逻辑删除: 使用deleted字段进行逻辑删除,禁止物理删除
  3. 多租户支持: 所有表都包含tenant_id字段,支持多租户
  4. 外键约束: 外键约束已注释,可根据实际需要启用
  5. 字符集: 统一使用utf8mb4字符集,支持emoji等特殊字符

🔄 版本历史

  • 2024-01-20: 初始版本,创建请假类型配置表和请假记录表
  • 2024-01-21: 添加示例数据和查询示例
  • 2024-01-22: 完善索引设计和文档说明