# school_exam_records 表文档 ## 表概述 **表名**: school_exam_records **功能**: 考试记录管理表,负责管理教务系统中的考试实例记录,跟踪考试过程、记录考试成绩和管理考试状态 ## 字段说明 ``` 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 user_id int NULL NO NULL select,insert,update,references 人员ID paper_id int NULL NO NULL select,insert,update,references 试卷ID score decimal(5,2) NULL YES NULL select,insert,update,references 得分 status enum('in_progress','completed') utf8mb4_general_ci YES in_progress select,insert,update,references 考试状态: in_progress-进行中, completed-已完成 start_time datetime NULL YES NULL select,insert,update,references 考试开始时间 end_time datetime NULL YES 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 修改时间 ``` ## 功能用途 ### 主要功能 1. **考试实例管理**: 创建和管理具体的考试实例记录 2. **考试状态跟踪**: 跟踪考试的进行状态(进行中/已完成) 3. **成绩记录管理**: 记录和管理考试的最终得分 4. **时间管理**: 记录考试的开始时间和结束时间 5. **人员关联管理**: 关联考试人员和试卷信息 6. **校区管理**: 按校区管理考试记录 7. **考试过程控制**: 控制考试的开始、进行和结束流程 8. **数据统计支持**: 为考试数据分析提供基础数据 9. **时间追踪**: 记录考试记录的创建和修改时间 ### 业务场景 1. **员工考试**: 记录员工技能测试、入职考试、培训考试过程 2. **学员测评**: 记录学员课程测试、阶段考试、毕业考试过程 3. **考试监控**: 实时监控考试进行状态和完成情况 4. **成绩管理**: 统计和管理考试成绩,生成成绩报告 5. **考试分析**: 分析考试时长、通过率等数据 6. **补考管理**: 管理需要补考的人员和考试安排 7. **考试审计**: 提供考试过程的审计追踪 8. **数据导出**: 导出考试记录用于外部分析 9. **考试统计**: 按时间、人员、试卷等维度统计考试情况 ## 关联关系 ### 主要关联表 1. **school_exam_papers**: 试卷表(paper_id外键关联) 2. **school_personnel**: 人员表(user_id关联员工) 3. **school_student**: 学员表(user_id关联学员) 4. **school_campus**: 校区表(campus_id外键关联) 5. **school_exam_answers**: 考试答案表(考试答题记录关联) 6. **school_course**: 课程表(课程考试关联) 7. **school_class**: 班级表(班级考试关联) 8. **school_exam_questions**: 考试题目表(间接关联) ### 关联说明 1. **试卷关联**: paper_id字段关联到具体的试卷配置 2. **人员关联**: user_id字段关联到考试人员(员工或学员) 3. **校区关联**: campus_id字段关联到具体校区 4. **答题关联**: 考试答案表记录此次考试的具体答题情况 5. **课程关联**: 考试可以关联到具体的课程或班级 6. **题目关联**: 通过试卷间接关联到考试题目 7. **状态关联**: 考试状态决定是否可以查看成绩 8. **时间关联**: 开始和结束时间用于计算考试时长 ## 索引建议 1. **主键索引**: id(已存在) 2. **外键索引**: - campus_id(校区查询) - user_id(人员查询) - paper_id(试卷查询) 3. **普通索引**: - status(状态查询) - score(成绩查询) 4. **复合索引**: - (campus_id, user_id)(校区+人员查询) - (paper_id, status)(试卷+状态查询) - (user_id, status)(人员+状态查询) - (start_time, end_time)(时间范围查询) 5. **时间索引**: - start_time(开始时间查询) - end_time(结束时间查询) - created_at(创建时间查询) - updated_at(更新时间查询) ## 注意事项 1. **状态一致性**: status必须为枚举值中的一种 2. **时间逻辑**: end_time必须大于start_time 3. **成绩范围**: score应在试卷设定的分数范围内 4. **外键完整性**: campus_id、user_id、paper_id必须存在 5. **状态流转**: 只能从in_progress转换为completed 6. **并发控制**: 同一人员同一试卷同时只能有一个进行中的考试 7. **时间控制**: 考试时间不能超过试卷设定的时间限制 8. **成绩计算**: 成绩应基于答题情况自动计算 9. **数据完整性**: 删除考试记录需要同时删除相关答题记录 10. **权限验证**: 只有考试人员本人和管理员可以查看考试记录 11. **审计要求**: 考试过程需要记录详细的操作日志 12. **备份策略**: 重要考试数据需要定期备份 13. **性能优化**: 大量考试记录查询需要考虑性能 14. **数据归档**: 历史考试记录需要定期归档处理