基于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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1168273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主动配电网故障恢复与孤岛划分模型【多时段】Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#x1…

好写作AI|别让模型和图表在论文里“单飞”!你的结论需要一位“翻译官”

你的STATA跑出了漂亮的回归结果,PPT里的图表惊艳全场。可当你把分析过程写进论文,导师的批注却是:“所以这些数字到底说明了什么商业现实?请用人类语言解释一下。”这大概是经管学子最熟悉的“专业鸿沟”:你能构建精妙…

基于SpringAI的在线考试系统-系统业务全流程

教育考试系统业务全流程分析 1. 系统架构概述 1.1 技术架构 后端技术栈:Spring Boot、MyBatis Plus、MySQL、Redis、RabbitMQ前端技术:未在代码中明确体现,推测为Web前端框架认证机制:JWT(JSON Web Token)部…

从 FFI 到系统架构:跨语言核心库的设计方法——把“会调用 native”,升级为“构建系统能力”

关键词:FFI / 系统边界 / Native Core / 架构设计 / 跨平台 / SDK / Framework一、为什么一定要有一篇“总结篇”?前面三篇,其实已经完成了三件事:建立统一认知(FFI 是系统边界)吃透核心难点(数…

考虑主动调控手段的配电网分布式电源最大承载力模型Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

第一次调用ACPI!ACPIBuildProcessQueueList时ACPI!AcpiBuildDeviceList中项的来源和ACPI!ACPIBuildDeviceRequest函数有关-重要

第一次调用ACPI!ACPIBuildProcessQueueList时ACPI!AcpiBuildDeviceList中项的来源和ACPI!ACPIBuildDeviceRequest函数有关-重要 0: kd> gu Breakpoint 19 hit eax=00000000 ebx=ffdff120 ecx=ffdff988 edx=ffdff980 esi=f73fc5b2 edi=ffdff980 eip=f73fc5b2 esp=f789efa0 eb…

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

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

基于单片机的密闭容器压力检测系统设计(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T5032407C设计简介:本设计是基于单片机的密闭容器压力检测系统设计,主要实现以下功能:通过气压传感器检测气压通过气压是…

2025年8.95%城乡规划生转GIS开发,背后原因揭秘

新的一年开始,又到了大家做年度规划的时间。近期后台总是收到很多小伙伴的留言。包括过去的一整年,有很多城乡规划专业的同学在后台询问:零开发基础能不能转行做GIS开发?如何成功转行GIS开发?其实除了3S专业的学生&…

微模块机房如何实现智能运维?技术解析来了

在数据中心基础设施向轻量化、边缘化演进的趋势下,微模块机房因其部署快、能效高、占地小等优势,被广泛应用于企业分支、高校、制造车间等场景。然而,很多人仍将其误解为“几个机柜空调”的简单组合。实际上,微模块的核心竞争力在…

【2026】 LLM 大模型系统学习指南

从入门到进阶:LLM 大模型系统学习指南随着 AI 技术的发展,大语言模型(LLM)已经成为科技领域的核心工具,无论是日常对话、内容创作还是专业领域的问题解决,都能看到它的身影。但很多人面对复杂的技术概念和繁…

新中地学员转行学GIS开发原因盘点(2)

这一期,我们继续分享另外一个比较普遍的原因:因为不想做外业而选择转行。煤矿探测转GIS开发该同学是某双非一本测绘工程专业,毕业后入职某能源型国企,每月定额下井14次,并负责一些地面技术工作,在煤矿工作一…

【2026】 LLM 大模型系统学习指南 (2)

一文读懂生成式 AI:从 “文字接龙” 到智能创作的核心原理生活里我们常遇到生成式 AI:用 ChatGPT 写活动方案、让 AI 画一张 “赛博朋克故宫”、甚至用 AI 生成简单的代码 —— 这些看似复杂的能力,背后藏着一套清晰的逻辑。今天我们就从最基…

好写作AI|别让设计说明比作品还抽象!是时候治好你的“文字失语症”了

毕设展览现场,你的交互装置惊艳全场。但当导师指着作品问你:“这个形态的隐喻是什么?用户路径的设计哲学怎么体现?” 你瞬间僵住,大脑飞速运转后挤出:“呃…就是觉得…这样比较酷?” 导师表情凝…

dot3api.dll文件丢失怎么办? 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

十年磨一剑,XSKY试锋芒:看AIMesh如何推翻AI效率头上的“三座大山”

当AI大模型的浪潮席卷各行各业,“百模大战”的硝烟愈发浓烈,企业投身AI赛道的竞争已进入深水区。曾几何时,算法的创新迭代是企业抢占AI高地的核心砝码,但如今,随着开源框架的普及、大模型技术的扩散,算法同…

基于django和python框架的OneStep商城线上商店订单管理系统

目录OneStep商城订单管理系统概述核心功能模块技术实现特点应用场景与优势关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!OneStep商城订单管理系统概述 OneStep商城是一个基于Djan…

智能场控源码系统,自动响应,7x24小时稳定工作,带完整的部署教程

温馨提示:文末有资源获取方式直播行业正经历从经验驱动到数据智能驱动的深刻变革。春哥团队隆重推出一款以AI与大数据为核心的自动场控机器人源码系统,旨在为主播及运营团队提供一站式的数据化解决方案。该系统不仅仅是互动工具,更是一个强大…

手把手教你用9款AI写论文工具,效率飙升300%告别拖延

还在为毕业论文、期刊投稿、课程论文而焦虑失眠吗?从选题迷茫、文献海啸、写作卡壳,到格式混乱、查重降重,每一个环节都足以让人崩溃。但今天,你的“论文搭子”来了! 我们为你精心测评并整合了9款顶尖AI论文工具&…

Trilium Notes联手cpolar,可以打造一个随时随地管理的知识库

Trilium Notes 是一款覆盖多系统的开源笔记工具,核心优势在于支持树状嵌套的笔记组织形式,能把零散的学习资料、工作文档梳理得条理清晰,还具备 Markdown 编辑、全文检索、笔记加密等实用功能,不管是程序员整理代码笔记、学生梳理…