# school_class_personnel_rel 表文档 ## 表概述 **表名**: school_class_personnel_rel **功能**: 班级人员关联表,用于管理班级与教学人员之间的多对多关联关系,支持主教练、助教、教务等不同角色的分工管理,记录人员在班级中的加入时间、离开时间和状态信息,为班级教学管理和人员调配提供完整的关联数据支持 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int NULL NO PRI NULL auto_increment select,insert,update,references class_id int NULL NO NULL select,insert,update,references 班级id campus_id int NULL YES NULL select,insert,update,references 校区id source_id int NULL YES NULL select,insert,update,references 数据id join_time int NULL YES NULL select,insert,update,references 加入时间 out_time int NULL YES NULL select,insert,update,references 离开时间 status tinyint NULL YES NULL select,insert,update,references 状态1正常2请假 create_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 update_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 role varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 主教练coach,asistantcoach助教,affairs教务 ``` ## 功能用途 ### 主要功能 - **班级人员关联**: 建立班级与教师、教务等人员的多对多关联关系 - **角色分工管理**: 通过role字段区分主教练、助教、教务等不同角色 - **人员状态跟踪**: 管理人员在班级中的状态(正常、请假等) - **时间周期管理**: 记录人员加入和离开班级的具体时间 - **校区关联管理**: 关联人员所属的校区信息 - **数据源追踪**: 通过source_id字段追踪人员数据的来源 - **人员变更记录**: 完整记录班级人员的变更历史 - **多角色支持**: 支持一个人员在同一班级担任多个角色 - **时间段管理**: 支持人员在不同时间段的角色变更 ### 业务场景 - **班级组建**: 新班级创建时分配主教练、助教等教学人员 - **人员调配**: 根据教学需要调整班级的教学人员配置 - **请假管理**: 教师请假时更新状态,安排代课教师 - **角色变更**: 助教晋升为主教练,或教务转为教学岗位 - **跨校区教学**: 教师在多个校区的不同班级任教 - **临时支援**: 临时安排教师支援其他班级的教学工作 - **人员考核**: 统计教师在各班级的任教情况和时长 - **排课管理**: 根据班级人员配置进行课程安排 - **工作量统计**: 统计教师的班级数量和教学工作量 - **人员流动**: 跟踪教师在不同班级间的流动情况 ## 关联关系 ### 主要关联表 - **school_class**: 班级表,通过class_id字段关联 - **school_campus**: 校区表,通过campus_id字段关联 - **school_personnel**: 人员表,通过source_id字段关联 - **school_course**: 课程表,班级关联的课程信息 - **school_schedule**: 排课表,根据班级人员安排课程 - **school_attendance**: 考勤表,记录班级人员的考勤情况 - **school_sys_user**: 系统用户表,人员可能对应系统用户 ### 关联说明 - **班级关联**: 通过class_id与school_class表建立多对一关系 - **校区关联**: 通过campus_id与school_campus表建立多对一关系 - **人员关联**: 通过source_id与school_personnel表建立多对一关系 - **课程关联**: 班级人员配置影响课程的教学安排 - **排课关联**: 班级人员信息是排课的重要依据 - **考勤关联**: 班级人员的考勤记录与此表相关 ## 索引建议 ```sql -- 主键索引(自动创建) PRIMARY KEY (id) -- 班级ID索引(用于查询班级人员) INDEX idx_class_id (class_id) -- 校区ID索引(用于按校区查询) INDEX idx_campus_id (campus_id) -- 数据源ID索引(用于查询人员班级) INDEX idx_source_id (source_id) -- 状态索引(用于查询有效人员) INDEX idx_status (status) -- 角色索引(用于按角色查询) INDEX idx_role (role) -- 复合索引(用于班级人员查询) INDEX idx_class_status (class_id, status) -- 复合索引(用于人员班级查询) INDEX idx_source_class (source_id, class_id) -- 时间范围索引(用于查询在职人员) INDEX idx_time_range (join_time, out_time) ``` ## 注意事项 - **角色规范**: role字段应使用标准的角色代码(coach、assistantcoach、affairs) - **时间逻辑**: join_time应小于out_time,out_time为空表示仍在职 - **状态一致性**: 人员状态变更应与实际工作状态保持一致 - **重复检查**: 避免同一人员在同一班级同一时间段重复分配 - **权限控制**: 不同角色的人员应有不同的班级管理权限 - **数据完整性**: source_id应确保在school_personnel表中存在 - **校区一致性**: 人员所属校区应与班级所属校区保持一致 - **时间精度**: 时间字段应保证足够的精度,支持精确的时间管理 - **状态流转**: 人员状态变更应遵循合理的流转规则 - **历史记录**: 重要的人员变更应保留完整的历史记录 - **并发控制**: 人员分配操作需要考虑并发安全问题 - **业务规则**: 主教练不能为空,每个班级至少要有一个主教练 - **离职处理**: 人员离职时应及时更新out_time字段 - **数据清理**: 定期清理过期的人员关联记录 - **审计追踪**: 重要的人员变更操作应记录操作日志