福建省网站建设_网站建设公司_Figma_seo优化
2026/1/16 11:19:10 网站建设 项目流程

exam_system_ai 数据库 表结构 & 完整外键依赖关系梳理

整体说明

该库是考试系统AI(在线考试+智能阅卷评分)专用MySQL库,共包含26张业务表 + 3个统计视图,所有表的编码均为utf8mb4,主键均为自增ID;
表之间的关联完全基于外键约束+业务逻辑关联,依赖关系具备清晰的层级结构(底层基础表 → 中层业务表 → 上层核心业务表 → 附属拓展表),无循环依赖,外键约束规则分为ON DELETE CASCADE(级联删除)ON DELETE RESTRICT(限制删除)两类。

核心表业务数据流转

一、核心原则:依赖关系定义

  • 强依赖(外键约束):表A的字段通过FOREIGN KEY关联表B的主键,表A为子表,表B为父表,子表必须依赖父表存在,父表删除数据受外键规则限制;
  • 弱依赖(业务关联):无显式外键约束,但业务逻辑上字段值对应其他表主键,是系统业务流转的核心关联关系;
  • 无依赖:根级基础表,无任何外键字段,是整个库的底层基石表

二、根级基础表【无任何外键依赖 ✅ 最底层】

所有表的依赖最终追溯到这几张表,无外键指向其他表,删除无任何关联限制,是系统的核心基础数据载体,共4张:

1. subject (科目表)

  • 作用:存储学科信息(语文/数学/英语等)
  • 无外键,独立存在,是题库、知识点的核心归类维度

2. grade (年级表)

  • 作用:存储年级信息(一年级/初二/高三等)
  • 无外键,独立存在

3. classroom (班级表)

  • 作用:存储班级信息,关联年级
  • 弱依赖:grade_id→ grade.id (业务关联,无外键约束)
  • 无其他外键,独立存在

4. user (用户表) ✅ 核心核心核心

  • 作用:存储所有系统用户,角色分为ADMIN(管理员)、TEACHER(教师)、STUDENT(学生)
  • 无外键,独立存在,90%的业务表都关联该表的主键id
  • 弱依赖:class_id→classroom.id、grade_id→grade.id (业务关联,无外键)

三、基础业务表【仅依赖「根级基础表」】

基于底层基础表构建,无其他业务表依赖,是中层业务表的基础,共4张:

1. knowledge (知识点表)

  • 核心依赖(外键+约束):
    • subject_id→ subject.id 【ON DELETE CASCADE 级联删除】
    • creator_id→ user.id 【ON DELETE CASCADE 级联删除】
  • 作用:按科目归类知识点,绑定创建人,为试题打标签

2. question (试题表) ✅ 题库核心

  • 核心依赖(外键+约束):
    • knowledge_id→ knowledge.id 【ON DELETE SET NULL 父表删除则置空】
    • subject_id→ subject.id 【ON DELETE SET NULL 父表删除则置空】
    • create_by→ user.id 【ON DELETE CASCADE 级联删除】
  • 作用:存储所有题型(单选/多选/判断/填空/简答)的核心数据,是试卷、答题的基础

3. paper (试卷表)

  • 核心依赖(外键+约束):
    • creator_id→ user.id 【ON DELETE CASCADE 级联删除】
  • 作用:存储试卷基础信息,绑定创建教师,关联试题组成完整试卷

4. paper_question (试卷试题关联表)

  • 核心依赖(外键+约束):
    • paper_id→ paper.id 【ON DELETE CASCADE 级联删除】
    • question_id→ question.id 【ON DELETE CASCADE 级联删除】
  • 作用:多对多关联表,解决「一张试卷对应多道题、一道题出现在多张试卷」的关系,存储每题在试卷中的分值

四、考试核心业务模块【依赖「根级基础表+基础业务表」】

考试全流程的核心表,完整覆盖「创建考试→学生答题→考试记录→防作弊」,考试业务主链路,共4张:

1. mock_exam (考试表) ✅ 考试核心

  • 弱依赖(业务关联,无外键):paper_id→ paper.id
  • 作用:存储考试的基础配置(标题/总分/时长/起止时间),关联试卷生成考试场次

2. mock_exam_answer (模拟考试答题记录表)

  • 核心依赖(外键+约束):
    • user_id→ user.id 【ON DELETE CASCADE 级联删除】
    • paper_id→ paper.id 【无显式约束,业务强关联】
    • question_id→ question.id 【ON DELETE CASCADE 级联删除】
  • 作用:存储学生每一道题的答题详情(作答内容/正确答案/得分/对错),考试核心明细数据

3. mock_exam_record (考试记录表) ✅ 考试结果核心

  • 核心依赖(外键+约束):
    • exam_id→ mock_exam.id 【ON DELETE CASCADE 级联删除】
    • user_id→ user.id 【ON DELETE CASCADE 级联删除】
  • 作用:存储学生单场考试的整体结果(开始/结束时间/总得分/用时/排名),是考试结果的汇总表

4. exam_screen_record (考试屏幕切换记录表)

  • 弱依赖(业务关联,无外键):exam_id→mock_exam.id、user_id→user.id
  • 作用:考试防作弊,记录学生考试期间的页面切换行为,无外键约束

五、阅卷评分核心业务模块【依赖「所有前置表」,最复杂,表量最多】

系统最核心的业务模块,完整覆盖「创建阅卷任务→分配评分教师→双盲评分→评分质量监控→异常检测→仲裁复核→进度统计」全流程,阅卷评分主链路,共9张,严格的父子依赖关系,排序按「核心→附属」:

✔ 阅卷核心主表(基石)

  1. marking_task (阅卷任务主表):阅卷业务的根表
    • 弱依赖:exam_id→mock_exam.id、create_by→user.id、mock_exam_record_id→mock_exam_record.id
    • 作用:创建阅卷任务,关联考试,配置任务优先级/状态/完成时间

✔ 阅卷任务关联表(依赖主表)

  1. marking_task_assignment (阅卷任务分配表)
    • 强依赖:task_id→ marking_task.id 【无显式外键,业务强关联】
    • 弱依赖:teacher_id→user.id、student_id→user.id、question_id→question.id
    • 作用:将阅卷任务分配给教师,按「试题/学生/混合」规则分配,记录分配状态/进度

✔ 阅卷评分核心表(依赖分配表+任务表)

  1. marking_score (阅卷评分表):评分结果核心
    • 弱依赖:task_id→marking_task.id、assignment_id→marking_task_assignment.id、teacher_id→user.id、student_id→user.id、question_id→question.id
    • 作用:存储最终的评分结果,记录每题的得分/评分教师/评分意见/审核状态,是阅卷的最终数据

✔ 阅卷质量&机制表(依赖核心表,保障评分公平性)

  1. marking_blind_score (盲评临时表-双盲评分机制):核心公平机制
    • 强依赖外键:关联 marking_task / question / user(学生/教师) 【ON DELETE RESTRICT 限制删除】
    • 作用:双盲评分,两位教师匿名评分同一道题,无相互干扰,是评分质量的核心保障
  2. marking_quality_control (阅卷评分质量控制表)
    • 弱依赖:关联 exam_id/marking_task.id/question.id/user.id(学生/两位评分教师)
    • 作用:对比两位教师的评分,计算分差/差异率,判断是否超阈值,触发仲裁流程
  3. marking_arbitration_history (仲裁历史表)
    • 强依赖外键:quality_control_id→ marking_quality_control.id 【ON DELETE CASCADE】、arbitration_teacher_id→user.id 【ON DELETE RESTRICT】
    • 作用:评分分差超阈值后,仲裁教师复核打分,记录仲裁结果/理由

✔ 阅卷辅助监控表(依赖核心表,统计/异常)

  1. marking_progress (阅卷进度统计表)
    • 强依赖外键:task_id→marking_task.id、teacher_id→user.id 【ON DELETE CASCADE/RESTRICT】
    • 作用:统计每位教师的阅卷进度(完成数/完成率/平均评分时长/质量分)
  2. marking_anomaly (评分异常检测记录表)
    • 强依赖外键:task_id→marking_task.id、teacher_id→user.id 【ON DELETE CASCADE/RESTRICT】
    • 作用:检测评分异常(评分过快/过慢/分数重复/权限异常),记录异常类型/严重程度/处理状态
  3. marking_config (评分配置表):独立配置表,无外键
    • 作用:存储评分系统的全局配置(阈值/规则/参数),无任何依赖

六、辅助功能表【无强核心依赖,业务拓展功能】

共3张,为系统提供辅助能力,依赖根级基础表,无复杂关联:

  1. operation_log (操作日志表):弱依赖user_id→user.id,记录所有用户的操作行为(增删改查),审计追溯用
  2. wrong_question_collection (错题集表):强依赖user_id→user.id,存储学生的错题集名称/描述
  3. wrong_question_item (错题项表):强依赖外键
    • collection_id→ wrong_question_collection.id 【ON DELETE CASCADE】
    • user_id→ user.id 【ON DELETE CASCADE】
    • 作用:错题集的明细,存储学生的错题详情(试题/作答/正确答案/错误次数)

七、统计视图【无物理表,基于业务表生成,共3个】

无存储,实时计算,用于快速查询统计数据,均基于上述业务表关联生成:

  1. user_exam_stats:学生考试统计(完成场次/平均分/最高分/总用时)
  2. view_marking_task_stats:阅卷任务统计(任务进度/完成率/异常数/教师数)
  3. view_marking_teacher_stats:教师阅卷统计(完成数/效率/异常数/重评次数)

✅ 关键补充:2个核心重要规则

1. 外键约束的删除规则(重要!影响数据删除逻辑)

该库的外键仅用2种删除规则,区分严格度,无其他规则:

  • ON DELETE CASCADE【级联删除】:父表删除数据,子表关联数据自动删除
    例:删除user表的某个学生,其答题记录、考试记录、错题集都会被自动删除;删除试卷,试卷中的试题关联也会删除。
    适用:强绑定的业务数据,主数据删除,子数据无独立存在意义。

  • ON DELETE RESTRICT【限制删除】:父表存在子表关联数据时,禁止删除父表数据
    例:删除评分教师时,如果该教师有未处理的阅卷任务/异常记录,会直接报错,禁止删除。
    适用:核心业务主数据,防止误删导致业务数据断层。

2. 整体依赖层级总结(从上到下,无环依赖,清晰易懂)

【层级0 - 根表】:subject 科目 → grade 年级 → classroom 班级 → user 用户 (无任何依赖,所有表的基石) 【层级1 - 基础业务】:knowledge 知识点 → question 试题 → paper 试卷 → paper_question 试卷试题关联 (仅依赖层级0) 【层级2 - 考试业务】:mock_exam 考试 → mock_exam_answer 答题记录 → mock_exam_record 考试记录 (依赖层级0+1) 【层级3 - 阅卷核心】:marking_task 阅卷任务 → marking_task_assignment 任务分配 → marking_score 评分结果 (依赖层级0+1+2) 【层级4 - 阅卷附属】:质量控制/仲裁/进度/异常表 (仅依赖层级3的阅卷核心表) 【辅助层】:日志/错题集/切屏记录 (零散依赖各层级)

✅ 核心业务完整链路(表结构的业务逻辑闭环)

1. 基础配置:管理员维护 科目(subject)、年级(grade)、班级(classroom)、用户(user) 2. 题库建设:教师创建 知识点(knowledge) → 录入试题(question) → 组建试卷(paper) 3. 考试组织:创建考试(mock_exam)关联试卷 → 学生参与考试 → 生成答题记录(mock_exam_answer)、考试记录(mock_exam_record) 4. 智能阅卷:创建阅卷任务(marking_task) → 分配教师(marking_task_assignment) → 双盲评分(marking_blind_score) → 质量监控(marking_quality_control) 5. 异常处理:检测评分异常(marking_anomaly) → 仲裁复核(marking_arbitration_history) → 统计进度(marking_progress) 6. 学情分析:学生错题自动归集(wrong_question_item) → 考试成绩统计(user_exam_stats)

所有表的设计均围绕该链路展开,无冗余表,关联关系严谨,业务闭环完整。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询