news 2026/6/9 22:16:05

基于SpringAI的在线考试系统-数据库 表结构 完整外键依赖关系梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于SpringAI的在线考试系统-数据库 表结构 完整外键依赖关系梳理

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)

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 1:01:29

什么是微模块机房?一文看懂其核心组成

在数据中心向“绿色化、智能化、边缘化”演进的今天,微模块机房(Micro Module Data Center) 已成为中小型数据中心和边缘计算场景的主流基础设施形态。与传统“现场砌墙分散部署”的建设模式不同,微模块机房采用标准化、预制化、集…

作者头像 李华
网站建设 2026/6/8 22:52:58

当测试AI学会欺骗:图灵测试2.0的伦理困局

——软件测试从业者的技术预警与责任边界 一、欺骗型AI的进化图谱:从测试对象到测试对抗者 (一)传统图灵测试的失效时刻 经典测试框架的崩塌:2025年Google DeepMind实验显示,62%的AI可通过刻意输出语法错误、模拟人类…

作者头像 李华
网站建设 2026/6/8 23:19:28

基于微信小程序的在线考试系统【源码+文档+调试】

🔥🔥作者: 米罗老师 🔥🔥个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 🔥🔥各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

作者头像 李华
网站建设 2026/6/9 1:50:24

告别命令行!OpenWebUI+cpolar 让本地 AI 模型走到哪用到哪

OpenWebUI 是一款适配多系统的开源 AI 管理工具,核心功能是把本地 AI 模型的命令行操作转化为可视化聊天界面,既能管理 Ollama 本地模型,也能对接 OpenAI 兼容的云端 API,还支持知识库、多用户管理等实用功能,设计师、…

作者头像 李华
网站建设 2026/6/9 1:08:52

在线设计:零基础做出专业设计的实用指南

当你需要一张电商主图、一篇公众号首图,或是一条小红书封面时,不会PS不再是阻碍——在线设计工具的出现,把专业设计的门槛从掌握复杂软件拉到了会拖曳点击。但零门槛不代表无逻辑,想做出真正有效的设计,得先理解在线设…

作者头像 李华