# school_class 表文档 ## 表概述 **表名**: school_class **功能**: 班级信息管理表,存储教务系统中所有班级的基本信息、教练配置、课程关联、学员管理等核心数据 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int NULL NO PRI NULL auto_increment select,insert,update,references 班级编号 campus_id int NULL NO NULL select,insert,update,references 校区ID campus_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 校区名称 class_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级名称 head_coach varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级主教练 age_group varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级授课年龄段 class_type varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级类型 assistant_coach varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级助教 created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 deleted_at varchar(255) utf8mb4_general_ci YES 0 select,insert,update,references 逻辑删除时间 status tinyint NULL YES 1 select,insert,update,references 班级状态(1开启 2关闭) sort_order int NULL NO NULL select,insert,update,references 班级排序 remarks text utf8mb4_general_ci YES NULL select,insert,update,references 班级备注 educational_id int NULL NO 0 select,insert,update,references 教务id ``` ## 功能用途 ### 主要功能 1. **班级基础管理**: 存储班级名称、编号、类型、状态等基本信息 2. **教练配置管理**: 配置主教练(head_coach)和助理教练(assistant_coach) 3. **课程关联管理**: 通过course_id关联具体课程信息 4. **学员容量管理**: 设置班级最大学员数量限制 5. **时间周期管理**: 管理班级开始和结束时间 6. **校区归属管理**: 通过campus_id关联所属校区 7. **班级状态控制**: 管理班级的启用/禁用状态 8. **排序展示管理**: 通过sort字段控制班级显示顺序 ### 业务场景 1. **班级创建**: 新建班级,配置基本信息和教练 2. **学员报名**: 学员选择班级进行课程学习 3. **排课管理**: 为班级安排具体的上课时间和地点 4. **教练调配**: 根据需要调整班级的主教练和助理教练 5. **容量控制**: 限制班级学员数量,避免超员 6. **班级调整**: 修改班级信息、合并或拆分班级 7. **数据统计**: 统计班级学员数量、课程进度等信息 8. **校区管理**: 不同校区的班级独立管理 ## 关联关系 ### 主要关联表 1. **school_course**: 课程表(course_id字段关联) 2. **school_personnel**: 人员表(head_coach, assistant_coach关联) 3. **school_campus**: 校区表(campus_id字段关联) 4. **school_class_member**: 班级学员关联表 5. **school_schedule**: 排课表(班级排课关联) 6. **school_class_course**: 班级课程关联表 7. **school_attendance**: 考勤表(班级考勤统计) 8. **school_homework**: 作业表(班级作业管理) ### 关联说明 1. **课程关联**: 通过course_id与课程表关联,确定班级所属课程 2. **教练关联**: head_coach和assistant_coach关联人员表,配置班级教练 3. **校区关联**: 通过campus_id关联校区,实现多校区班级管理 4. **学员关联**: 通过班级学员关联表管理班级内的学员 5. **排课关联**: 班级与排课表关联,安排具体上课时间 6. **教学关联**: 与考勤、作业等教学管理功能关联 ## 索引建议 1. **主键索引**: id(已存在) 2. **外键索引**: - course_id(课程关联查询) - campus_id(校区关联查询) - head_coach(主教练查询) - assistant_coach(助理教练查询) 3. **普通索引**: - class_name(班级名称搜索) - class_type(班级类型筛选) - status(状态筛选) - sort(排序查询) - create_time(创建时间排序) 4. **复合索引**: - (campus_id, status)(校区+状态查询) - (course_id, status)(课程+状态查询) - (status, sort)(状态+排序查询) ## 注意事项 1. **容量控制**: max_students字段需要与实际报名人数进行校验 2. **教练配置**: 主教练和助理教练不能为同一人 3. **时间逻辑**: start_time不能晚于end_time 4. **软删除**: 使用deleted_at字段实现软删除,保护历史数据 5. **状态管理**: 班级状态变更需要考虑已报名学员的影响 6. **课程关联**: course_id变更需要验证课程的有效性 7. **校区归属**: campus_id变更需要考虑教练和学员的校区匹配 8. **排序维护**: sort字段需要保证在同一校区内的唯一性和连续性 9. **教练权限**: 教练只能管理自己负责的班级 10. **数据一致性**: 班级删除时需要处理相关的学员、排课等数据