云帆培训考试系统数据库深度解析:题库、试卷、考试三大核心表结构设计

发布时间:2026/10/28 7:17:27

云帆培训考试系统数据库深度解析:题库、试卷、考试三大核心表结构设计 云帆培训考试系统数据库深度解析题库、试卷、考试三大核心表结构设计【免费下载链接】yftrain学习系统-在线考试系统 企业培训内训系统-企教培系统平台软件项目地址: https://gitcode.com/gh_mirrors/yf/yftrain云帆培训考试系统yftrain是一款基于 SpringBoot Shiro Vue MySQL 的开源在线考试系统 / 企业培训内训平台。这篇文章带你深入它的数据库脚本拆解支撑「建题库 → 组卷考试 → 答题记录 → 错题训练」全流程的三大核心模块——题库表、考试表、试卷表的结构设计帮你看懂一套完整在线考试系统的建表思路 一、全局速览12 张 el_ 业务表如何分工打开初始化脚本 docs/安装资源/数据库脚本.sql你会发现除系统表sys_user、sys_role、sys_depart和 Quartz 定时任务表QRTZ_*外核心业务全部由 12 张el_前缀的表承担模块核心表职责 题库el_repo/el_qu/el_qu_answer/el_qu_repo题库、试题、选项、题目-题库关联 考试el_exam/el_exam_repo/el_exam_depart考试主表、组卷规则、部门限制 试卷el_paper/el_paper_qu/el_paper_qu_answer个人试卷快照、题目作答、选项作答 学员el_user_book/el_user_exam错题本、重考与最高分记录整体是一条清晰的链路题库出题 → 考试定规则 → 每人一张试卷 → 结果回流错题本。下面逐个模块拆解。二、题库表结构设计一道题被拆成三份存储2.1 为什么题目、选项、题库要分开看el_qu试题主表见 数据库脚本.sql L188-L200的字段设计qu_type题目类型对应枚举 QuType.java ——1 单选题、2 多选题、3 判断题level难度1 普通、2 较难为按难度抽题组卷留好口子content/image/analysis题干、题目图片、整题解析而每个选项单独一行存入el_qu_answer试题答案选项表用is_right标记是否正确。这种设计非常巧妙多选题天然支持多个is_right1的选项判断题固定生成正确/错误两个选项逻辑与选择题完全统一选项还可带image图片选项和analysis选项解析扩展性极强。2.2 一题多库的关联表el_qu_repoel_qu_repo试题题库关联让同一道题可以归属多个题库多对多并冗余了qu_type与sort字段——抽题组卷时按sort排序、按题型筛选无需回查主表。配套实体见 QuRepoDTO.java 与 QuRepo.java。批量导入后题库在数据库中的形态就像下面这样一列一行、按序号排列三、考试表结构设计el_exam 主表 组卷规则表3.1 考试主表el_exam考试主表定义考什么、考多久、多少分及格见 数据库脚本.sql L24-L40字段说明open_type开放范围1 公开 / 2 部门 / 3 定员state状态机0 考试中 / 1 待阅卷 / 2 已完成 / 3 已结束见 ExamState.javatotal_score/total_time/qualify_score总分、总时长分钟、及格分数start_time/end_time考试开放时间段3.2 组卷规则表el_exam_repo随机组卷的核心 这是题库组卷指定题库、分数、数量功能的灵魂所在。一行记录 一个题库在某场考试中的抽题配额radio_count/radio_score抽 2 道单选题、每题 10 分multi_count/multi_score、judge_count/judge_score多选题、判断题同理saq_count/saq_score简答题配额人工阅卷题脚本中的演示数据正是2 单选 6 多选 2 判断 100 分的一套真实配置且(exam_id, repo_id)建了唯一索引防止重复配置。配合el_exam_depart考试-部门关联表指定部门才能看到考试的定员逻辑也就齐活了。四、试卷表结构设计一人一卷的快照思想这是整个数据库最精彩的部分。学员一旦开始考试系统不会直接读题库而是把随机抽到的题复印成一份专属试卷涉及三张表表粒度关键设计el_paper一场考试一份试卷冗余总分/及格分、user_score用户得分、obj_score/subj_score客观主观分、limit_time截止时间el_paper_qu试卷中每道题answered是否已答、answer主观题答案文本、score单题分值、actual_score实际得分、is_right是否答对el_paper_qu_answer每个选项一行checked是否被勾选、abc选项标签A/B/C…完整还原多选作答为什么用快照题目日后被修改历史试卷不受影响每人题目顺序随机打乱直接杜绝抄同桌阅卷时只需对比快照即可无需关心题库现状。组卷入口在 PaperServiceImpl.java 的createPaper方法L113-L156先校验没有正在进行中的试卷再按el_exam_repo规则从题库随机抽题生成el_paper三表数据。4.1 到点强制交卷Quartz 定时任务加持更细节的是创建试卷时会注册一个一次性定时任务BreakExamJob在limit_time到期时自动强制交卷对应 BreakExamJob.java脚本中成组的QRTZ_*表就是 Quartz 的调度基础设施。试卷状态机0 考试中 → 1 待阅卷 → 2 已完成 / 3 弃考定义在 PaperState.java含简答题的试卷自动进入待阅卷客观题部分即时得分。五、考试闭环错题本与重考机制考试结束后的数据回流由两张轻量表完成el_user_book错题本记录wrong_count错误次数、update_time最近错误时间、sort错题序号并冗余title题目标题快照——支撑错题训练功能反复巩固el_user_exam考试记录按(user_id, exam_id)唯一索引聚合记录try_count考试次数、max_score最高分、passed是否通过多次重考只保留最优成绩。六、三个值得抄作业的表设计亮点 ✅模板与实例分离el_qu_repo题-库、el_paper_qu题-卷都是复制型中间表题库改题不影响已生成的试卷是快照式设计的标准示范字符串雪花 ID主键统一varchar(64) 19 位雪花算法 ID如1587622642263625729避免自增主键暴露业务量也为分库分表留了余地状态字段 枚举类配套el_exam.state、el_paper.state等所有状态列都在 Java 侧有对应的ExamState/PaperState接口常量约束杜绝魔法数字。七、如何上手研究这套数据库设计将 数据库脚本.sql 导入本地 MySQL5.7即可获得含演示题目的完整库按模块对照实体类阅读题库 Qu.java、考试 Exam.java、试卷 Paper.java重点通读 PaperServiceImpl.java它把「组卷 → 答题 → 判分 → 错题入库」整条链路的表写入时机串得清清楚楚。吃透这 12 张表的分工与关系你也就掌握了在线考试系统数据库设计的通用范式题库是资产考试是规则试卷是快照错题本是成长。【免费下载链接】yftrain学习系统-在线考试系统 企业培训内训系统-企教培系统平台软件项目地址: https://gitcode.com/gh_mirrors/yf/yftrain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/26 1:00:03

Java 17与Spring AI技术解析及大厂面试实战

1. 项目概述:大厂技术栈深度解析与面试实战最近在准备顶级科技公司的技术面试时,我发现Java 17、Spring AI、RAG架构和Agent系统这四大技术栈频繁出现在面试题目中。这些技术不仅代表了当前企业级开发的最前沿,更是考察候选人综合能力的重要维…

2026/10/28 7:13:06

数据结构核心解析:从基础类型到工程实践

1. 数据结构:程序世界的骨架与脉络第一次接触数据结构时,我正试图用最原始的方式处理一个简单的通讯录程序。当时把所有联系人信息都塞进了一个大数组里,查找时需要遍历整个列表,删除操作更是噩梦——每次都要把后面的元素全部前移…

2026/10/28 7:13:06

ECC多义性全解析:从椭圆曲线P-384到SAP LSMW数据迁移实战

1. 先把“ECC”这个缩写从模糊区里拎出来搜索栏里输入“ECC”之后,蹦出来的东西往往让人一脸懵。一条信息被引向椭圆曲线密码学,讲的是P-384曲线如何参与证书签发,背后还挂着一个叫Trustwave的证书授权机构;另一条信息却被拽进Git…

2026/10/28 7:13:06

带头节点单链表:原理、实现与工程优化

1. 带头节点单链表的概念与价值在计算机科学领域,链表是最基础也最重要的数据结构之一。而带头节点的单链表(Linked List with Head Node)作为一种经典变体,在实际工程中有着广泛应用。与普通单链表相比,它在链表首部额…

2026/10/28 7:13:06

90天屏幕时间从6小时52分降到38分:我的caveman极简数字实验

屏幕使用时间报告显示我平均每天解锁手机112次,累计屏幕时间接近7个小时。那天晚上我做了一件看起来相当极端的事:把手机上所有带红点、带算法推荐、带无限下滑功能的App全部卸载,只留下电话、短信、地图、相机和扫码。然后我发了一条状态&am…

2026/10/28 7:13:06

caveman模式:回归基本盘,重装你的状态管理系统

最近跟几个做产品和搞健身的朋友聊起状态管理,大家不约而同提到了同一个词:caveman。这词最近在一些内容平台上高频出现,有人拿它调侃自己蓬头垢面宅家写代码的样子,有人把它当成一套训练计划的名字,还有人用它来形容那…

2026/10/28 7:08:06

排序算法解析:从基础到优化实践

1. 排序算法在数据结构中的核心地位排序是计算机科学中最基础也最重要的算法类别之一。作为一名从业十年的软件工程师,我处理过的每一个大型系统几乎都离不开高效的排序实现。排序算法不仅仅是面试常考题,更是我们日常开发中的"瑞士军刀"——从…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/28 0:02:13

Python股票自动交易系统源码解析:从行情获取到风控的完整链路

简介:这份资源是面向高校计算机、金融相关专业毕业设计场景的完整项目源码包,主题为基于Python的股票自动交易系统,适合需要完成毕设选题、课程设计或自学金融量化交易开发的学生与开发者参考。压缩包共收录687个文件,整体约14.93…

2026/10/28 0:02:13

视酷酷信IM源码部署指南:Java 17+MySQL 8.0.33实战配置

简介:这是一套2024年亲测可部署的视酷酷信IM即时通讯系统源码,面向具备Java、OC、C#及Vue开发能力的技术人员,解决私有化即时通讯平台快速搭建与二次定制需求,尤其适用于需集成商城、保障数据主权的中小型企业或独立开发者。资源共…

2026/10/28 0:02:13

Python爬取百度迁徙数据:接口解析、批量采集与避坑指南

简介:这份资源是一个用Python爬取百度迁徙数据的脚本压缩包,面向具备Python基础、希望入门网络爬虫与数据解析的开发者,解决按日期获取全国热门城市人口迁徙数据的问题。包内共1个文件,为单个py脚本,压缩包约1KB&#…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑