# school_student_courses 表文档 ## 表概述 **表名**: school_student_courses **功能**: 学员课程关联表,负责管理学员与课程的关联关系,包括课时管理、使用情况跟踪、教练分配等核心功能 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int NULL NO PRI NULL auto_increment select,insert,update,references 记录编号 student_id int NULL NO MUL NULL select,insert,update,references 学员ID course_id int NULL NO NULL select,insert,update,references 课程ID total_hours int NULL NO NULL select,insert,update,references 总正式课时数 gift_hours int NULL YES 0 select,insert,update,references 赠送课时数 start_date date NULL NO NULL select,insert,update,references 课程开始日期 end_date date NULL NO NULL select,insert,update,references 课程结束日期 use_total_hours int NULL NO 0 select,insert,update,references 已使用课包课时数 use_gift_hours int NULL NO 0 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 修改时间 single_session_count int NULL YES NULL select,insert,update,references 单次消课数量 status tinyint(1) NULL YES NULL select,insert,update,references 课程状态1有效2过期3等待期4延期 resource_id int NULL YES NULL select,insert,update,references 资源ID main_coach_id int NULL YES NULL select,insert,update,references 主教练ID assistant_ids varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 助教ID列表(逗号分隔) education_id int NULL YES NULL select,insert,update,references 教务ID ``` ## 功能用途 ### 主要功能 1. **学员课程关联**: 建立学员与课程的关联关系 2. **课时管理**: 管理总课时数、赠送课时数及使用情况 3. **课程周期管理**: 管理课程的开始和结束日期 4. **课时消耗跟踪**: 跟踪已使用的正式课时和赠送课时 5. **教练分配**: 管理主教练和助教的分配 6. **课程状态控制**: 管理课程的有效性和状态变更 7. **单次消课设置**: 设置每次上课消耗的课时数量 8. **教务管理**: 关联教务人员进行课程管理 9. **资源关联**: 关联相关资源信息 ### 业务场景 - 学员报名课程时创建课程关联记录 - 课时包购买和赠送课时分配 - 学员上课时进行课时消耗 - 教练排课和教学安排 - 课程到期提醒和续费管理 - 课程状态变更和延期处理 - 课时使用情况统计和分析 - 教务人员课程管理和监督 - 课程资源分配和调整 ## 关联关系 ### 主要关联表 1. **school_student**: 通过student_id关联学员信息 2. **school_course**: 通过course_id关联课程信息 3. **school_personnel**: 通过main_coach_id关联主教练 4. **school_personnel**: 通过assistant_ids关联助教 5. **school_personnel**: 通过education_id关联教务人员 6. **school_attendance**: 学员考勤记录关联 7. **school_schedule**: 课程安排关联 8. **school_pay**: 课程付费记录关联 9. **school_contract**: 课程合同关联 ### 关联说明 - **学员关联**: student_id关联学员基本信息和学习状态 - **课程关联**: course_id关联课程详细信息和课程设置 - **教练关联**: main_coach_id关联主教练,assistant_ids关联多个助教 - **教务关联**: education_id关联负责的教务人员 - **资源关联**: resource_id关联相关教学资源 - **考勤关联**: 与考勤表关联跟踪上课情况 - **排课关联**: 与排课表关联管理课程安排 - **付费关联**: 与付费记录关联课程购买情况 ## 索引建议 - **主键索引**: id(已存在) - **外键索引**: student_id(学员课程查询) - **业务索引**: - course_id(课程学员查询) - main_coach_id(教练课程查询) - education_id(教务课程查询) - status(状态查询) - **复合索引**: - (student_id, status)(学员有效课程查询) - (course_id, status)(课程有效学员查询) - (main_coach_id, status)(教练有效课程查询) - (start_date, end_date)(课程周期查询) - **时间索引**: - start_date(开始时间查询) - end_date(结束时间查询) - created_at(创建时间查询) ## 注意事项 1. **课时完整性**: 总课时数必须等于已使用课时数加剩余课时数 2. **状态一致性**: 课程状态变更需要与实际情况保持一致 3. **日期有效性**: 开始日期不能晚于结束日期 4. **教练有效性**: 主教练和助教必须是有效的教练人员 5. **课时消耗**: 单次消课数量不能超过剩余课时 6. **助教格式**: assistant_ids字段存储逗号分隔的助教ID列表 7. **过期处理**: 课程到期后需要及时更新状态 8. **数据同步**: 课时使用情况需要与考勤记录保持同步 9. **权限控制**: 只有相关教练和教务人员可以操作 10. **历史保留**: 课程结束后数据需要保留用于统计分析 11. **并发控制**: 课时消耗操作需要防止并发冲突 12. **赠送课时**: 赠送课时的使用需要有明确的规则 13. **延期处理**: 课程延期需要更新结束日期和状态 14. **资源管理**: 课程资源的分配和回收需要及时处理 15. **审计要求**: 重要操作需要记录操作日志