ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于SpringBoot与Vue的在线考试与自动阅卷系统的设计与实现计算机毕业设计(源码+lw+部署文档+讲解等)

基于SpringBoot与Vue的在线考试与自动阅卷系统的设计与实现计算机毕业设计(源码+lw+部署文档+讲解等) 博主介绍✌ 专注于VUE,小程序安卓Java,python,物联网专业 从事毕业指导项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题我会尽力帮助你。一、研究目的在全球教育数字化浪潮中传统纸质考试模式已难以满足大规模在线学习与评估的需求尤其在教学资源分布不均、考生数量剧增以及对评卷公平性与效率的高标准要求下亟需一种可扩展、高效且易维护的在线考试与自动阅卷解决方案。 本研究旨在构建基于SpringBoot框架的后端服务与Vue技术栈的前端交互系统以实现考试题目管理、试卷生成、在线答题、即时提交以及自动化阅卷等核心功能并通过RESTful API实现前后端解耦提升系统可维护性与可扩展性。 为满足多样化考试类型的需求本系统将支持选择题、判断题、填空题及简答题等多种题型并在自动阅卷模块中引入文本相似度匹配与规则引擎技术以兼顾客观分数与主观评价的准确性。 在数据层面本研究将采用MySQL或PostgreSQL数据库进行事务管理利用Redis缓存热点数据以降低响应延迟并通过JWT或OAuth2实现用户身份验证与权限控制确保系统安全性与合规性。 此外为提升评卷效率与透明度系统将提供实时统计分析仪表盘展示答题时长、正确率、分布曲线等指标为教师与管理者提供决策支持。 通过上述技术方案本研究期望实现以下目标一是构建高并发、高可用的在线考试平台满足千人以上并发考生的访问需求二是实现自动阅卷率超过90%的客观题与80%以上的主观题评分准确率三是提供可复用的模块化代码架构为后续功能扩展与第三方集成奠定基础。 本研究不仅为高校与在线教育机构提供一套成熟的技术实现路径也为学术界在在线评测算法、系统架构设计及安全保障方面提供可参考的案例与经验具有重要的理论价值与应用前景。二、研究意义随着信息技术的迅猛发展传统面向纸质考试的评测模式已难以满足现代教育体系对大规模、跨地域、即时反馈的需求在线考试与自动阅卷系统因而成为提升教育公平性与效率的重要手段。 本研究通过构建基于SpringBoot框架的后端服务与Vue技术栈的前端交互界面提供了一个可扩展、高并发、易维护的完整解决方案从而显著降低了教学资源分布不均所带来的制约提升了教师与学生在不同时间、地点进行考试和评阅的灵活性。 在技术层面该系统采用RESTful API实现前后端解耦利用JWT或OAuth2进行身份验证与权限控制并通过Redis缓存热点数据以降低响应延迟并提升整体性能这些设计思路为后续在大规模在线教育平台中实现模块化、微服务化架构提供了可借鉴的范例。 通过引入文本相似度匹配算法与规则引擎系统能够在保持客观题自动阅卷准确率超过90%的基础上对主观题进行高效、可追溯的评分为教师提供客观数据支持减少人工评阅工作量并降低主观偏差。 此外系统集成的实时统计分析仪表盘能够展示答题时长、正确率、分布曲线等关键指标为教学管理者提供决策依据进一步推动教学质量的持续提升。 在教育政策层面本研究为国家与地方教育部门制定在线考试标准与评估机制提供了技术参考助力实现教育资源的均衡配置与公平评测。 综上所述该系统不仅在技术实现上突破了传统单体应用的局限更在教学实践、评测公平性与数据驱动决策等方面具有深远意义为我国乃至全球在线教育与评测体系的发展提供了可复制、可推广的实践路径。三、国内外研究现状在全球范围内在线考试与自动阅卷技术已成为教育信息化的重要研究热点相关学术工作主要集中在系统架构设计、评测算法优化以及安全与隐私保护等方面。 传统的单体应用已难以满足大规模并发访问与模块化维护的需求因而出现了基于微服务、容器化部署以及云原生技术的多层次架构方案在前端交互层面响应式框架与组件化设计被广泛采用以提升用户体验与开发效率。 在评测算法领域研究者已将自然语言处理技术与深度学习模型相结合用于对简答题、论述题等主观性较强的答案进行自动评分同时通过知识图谱与语义匹配技术实现了对答案的多维度评估显著提升了评分准确率与可解释性。 安全与隐私方面学术界提出了基于区块链的考试数据不可篡改方案、以及多因素身份认证机制以防止作弊与数据泄露。 综上所述国外研究已形成以云原生架构、AI驱动评测与安全保障为核心的技术生态。在国内众多高校与科研机构围绕在线考试平台开展了系统性研究重点关注于本土化需求与技术适配。 许多项目采用Java后端框架与Vue前端技术栈结合MySQL或PostgreSQL数据库实现了题库管理、试卷生成、在线答题与即时提交等功能在自动阅卷模块中研究者利用文本相似度算法、规则引擎以及机器学习模型对客观题与主观题进行分数分配。 通过引入Redis缓存热点数据与JWT身份验证系统在大并发场景下表现出较高的响应速度与安全性。 在评测算法方面国内学者已开发出基于卷积神经网络的答案匹配模型并结合知识图谱进行语义补全以提升简答题评分的准确度。 此外针对多学科课程特点一些项目实现了自适应测试与个性化学习路径推荐为教师提供了数据驱动的教学决策支持。国内外研究成果在技术细节与应用场景上存在一定差异。 国外平台如大型MOOC系统已将自动阅卷与即时反馈机制深度集成形成了成熟的商业化生态而国内研究更侧重于本土化需求与开放源代码的推广强调系统的可扩展性与可维护性。 在评测算法层面国外研究多采用大规模预训练模型进行语义理解而国内研究则倾向于结合本土语言特点与教育大纲构建针对性的知识图谱与规则库。 通过对比分析可发现国内系统在实现细节、技术选型与安全机制方面已取得显著进展但在算法深度与模型泛化能力上仍有提升空间。总体而言国内外研究已形成以云原生架构、AI驱动评测与安全保障为核心的技术框架为构建高效、可靠的在线考试与自动阅卷系统提供了丰富的理论与实践基础。 在此基础上进一步探索跨域知识融合、模型可解释性以及隐私保护机制将是未来研究的重要方向。四、预期达到目标及解决的关键问题预期目标一是构建一套基于SpringBoot与Vue技术栈的完整在线考试与自动阅卷系统该系统能够支持多种题型的题库管理、试卷生成、在线答题、即时提交以及自动评分等核心功能并通过RESTful API实现前后端解耦提升代码可维护性与可扩展性。 预期目标二是实现高并发、高可用的系统架构能够在千人以上并发访问场景下保持响应时间低于两秒并通过Redis缓存热点数据与MySQL或PostgreSQL数据库事务管理实现数据一致性与高可靠性。 预期目标三是提升自动阅卷模块的准确率客观题评分准确率达到90%以上主观题评分准确率达到80%以上并通过文本相似度匹配、规则引擎与机器学习模型相结合的方式实现对简答题、论述题等主观性较强答案的高效评估。 预期目标四是构建完善的安全与权限管理机制采用JWT或OAuth2实现用户身份认证与细粒度权限控制并通过HTTPS、数据加密以及日志审计等手段保障系统安全与合规性。 预期目标五是提供可视化的数据分析仪表盘展示答题时长、正确率、分布曲线等关键指标为教师与管理者提供决策支持并支持导出报表与数据接口方便后续数据挖掘与教学改进。关键问题一是如何在保证系统高并发性能的同时保持数据库事务的一致性与完整性为此需要设计合理的分布式事务管理方案并通过读写分离、分库分表等技术降低单点压力。 关键问题二是自动阅卷算法在处理主观题时的准确率与可解释性问题需探索深度学习模型与知识图谱相结合的混合评测框架并引入人工审核机制提升评分结果的可信度。 关键问题三是前后端交互中的数据安全与隐私保护问题尤其在考试过程中需要防止作弊与答案泄露因此需实现实时监控、行为分析以及区块链技术的不可篡改特性以保障考试数据的完整性。 关键问题四是系统的可扩展性与维护成本控制如何通过微服务架构、容器化部署以及持续集成/持续交付(CI/CD)流程实现模块化升级与快速迭代。 关键问题五是多终端适配与用户体验优化尤其在移动设备上的响应式设计与离线答题功能需要兼顾网络波动与设备差异确保考生能够顺畅完成考试。 通过对上述目标与关键问题的系统研究与技术实现本项目将为在线教育领域提供一套高效、可靠、可持续发展的考试与阅卷解决方案。五、研究内容本研究以构建一套基于SpringBoot与Vue技术栈的在线考试与自动阅卷系统为核心目标围绕系统需求分析、架构设计、模块实现、性能优化与安全保障等方面展开系统性研究。首先在需求分析阶段通过访谈教师与学生以及对现有纸质考试流程的实地调研梳理出题库管理、试卷生成、在线答题、即时提交、自动阅卷以及数据统计分析等功能模块并明确非功能需求如高并发处理、数据安全与隐私保护、可维护性与可扩展性。其次在系统架构设计阶段采用微服务化设计理念将前后端分离后端采用SpringBoot框架实现业务逻辑与RESTful API前端使用Vue.js实现响应式用户界面通过Docker容器化部署与Kubernetes编排实现弹性伸缩与高可用数据库选用MySQL或PostgreSQL进行事务管理并通过Redis缓存热点数据以降低响应延迟。随后在模块实现阶段首先完成题库管理模块支持多种题型的增删改查与批量导入接着实现试卷生成模块支持随机抽题、分层抽样与自适应测试在线答题与即时提交模块采用WebSocket技术实现实时交互并对答案进行加密存储自动阅卷模块则融合规则引擎与自然语言处理技术对客观题采用精确匹配对主观题利用文本相似度算法与知识图谱进行分数评估数据统计分析模块通过可视化仪表盘展示答题时长、正确率、分布曲线等关键指标并提供报表导出接口。随后在性能优化与安全保障阶段采用读写分离、分库分表以及多级缓存策略提升系统吞吐量通过JWT或OAuth2实现身份认证与细粒度权限控制并结合HTTPS、数据加密与日志审计机制保障系统安全在作弊防范方面设计实时行为监测与异常检测模块并利用区块链技术实现考试数据不可篡改。接下来在测试与评估阶段进行单元测试、集成测试与压力测试利用JMeter或Locust模拟千人并发访问场景并通过A/B实验验证自动阅卷模型的准确率同时开展用户体验评测收集教师与学生反馈对系统界面与交互流程进行迭代优化。最后在部署与运维阶段构建CI/CD流水线实现代码自动化构建、测试与发布通过Prometheus与Grafana监控系统指标并制定灾备方案以保障业务连续性。综上所述本研究通过多层次技术手段与严谨工程实践致力于实现一套高效、可靠、可持续发展的在线考试与自动阅卷系统为教育信息化提供可复制、可推广的技术范式。六、需求分析用户需求方面系统的主要使用者包括教师、学生以及教育管理人员。教师需要一种便捷、高效的方式来创建与维护题库支持多种题型的录入、批量导入与版本管理并能够根据教学目标与课程进度快速生成试卷同时教师还期望能够实时查看学生答题情况、获取统计报表以便及时调整教学策略。学生则需要一个友好、稳定的在线答题环境支持多终端访问包括桌面电脑与移动设备且界面应简洁明了操作流程直观在考试过程中学生期望系统能够提供清晰的时间提示、答案提交确认以及错误提示并在考试结束后获得即时反馈与成绩报告。教育管理人员则关注系统的整体运行情况与数据安全性他们需要对考务流程进行统一管理包括考生注册、身份验证、试卷分发与阅卷结果统计此外管理人员还需要通过可视化仪表盘监控系统性能指标如并发访问量、响应时间与错误率并能够快速定位并解决潜在的技术或业务问题。综上所述用户需求聚焦于易用性、实时性与可靠性并强调数据安全与权限控制以满足教学活动的高效开展与管理监管。功能需求方面系统必须实现完整的在线考试生命周期管理。首先是题库管理模块支持题目增删改查、批量导入与导出并能够为每道题设置知识点标签、难度等级与参考答案其次是试卷生成模块能够根据教师设定的抽题规则如随机抽取、分层抽样或自适应测试自动生成试卷并支持多份试卷的批量生成与版本控制。在线答题模块需提供多终端兼容的答题界面支持文本输入、选择框、多选框、填空与上传附件等交互方式并通过WebSocket实现实时答案提交与状态同步同时系统应在答题过程中记录时间戳与操作日志以便后续审计。自动阅卷模块是核心功能之一需对客观题采用精确匹配算法对主观题利用文本相似度计算、规则引擎与知识图谱进行分数评估并支持人工复核与分数修正此外系统应提供阅卷结果的可追溯性与可解释性。数据统计分析模块需生成答题时长、正确率、题目难度曲线等多维度报表并支持导出为Excel或PDF格式以便教师与管理人员进行教学评估。安全与权限管理模块必须实现基于JWT或OAuth2的身份认证与细粒度权限控制保障考生信息与考试数据的机密性同时采用HTTPS、数据加密与日志审计等措施防止作弊与数据泄露。最后系统还需具备高可用性与弹性伸缩能力通过Docker容器化部署、Kubernetes编排以及多节点负载均衡实现并发访问的稳定运行并通过Redis缓存热点数据、读写分离与分库分表技术提升数据库性能。上述功能需求共同构成了一个完整、可靠且易于维护的在线考试与自动阅卷系统。七、可行性分析经济可行性方面本系统的开发与部署成本相对较低主要投入集中在软件开发、服务器租赁与维护、以及后期培训与技术支持。采用开源技术栈SpringBoot与Vue可避免昂贵的许可费用数据库使用MySQL或PostgreSQL同样为免费开源方案容器化部署与Kubernetes编排可利用云服务提供商的按需计费模式进一步降低基础设施成本。系统上线后能够为教育机构节约大量纸质考试与人工阅卷的费用预计在一年内即可实现成本回收并产生正向收益。社会可行性方面该系统满足了当前教育数字化转型的迫切需求能够提升教学公平性与效率为偏远地区学生提供优质评测资源同时通过自动阅卷减少教师工作负担提升教学质量与满意度。系统的安全与隐私设计符合国家数据安全法与教育信息化相关政策能够获得监管部门与家长的信任从而在社会层面具备良好的接受度。技术可行性方面所选技术栈已在众多大型项目中得到验证具有成熟的社区支持与丰富的文档资源微服务架构与容器化部署能够实现高并发处理与弹性伸缩自动阅卷模块结合自然语言处理与规则引擎可在保持较高准确率的同时兼顾可解释性。整体而言经济、社会与技术三方面均具备可行性为项目的顺利实施奠定坚实基础。八、功能分析系统功能模块的设计遵循需求分析结果形成一套完整、层次分明的功能体系。首先是用户管理与权限控制模块该模块负责教师、学生及管理员的注册、登录与角色分配并通过JWT或OAuth2实现身份认证与细粒度权限校验同时提供密码重置、账号安全审计以及多因素身份验证等安全功能。其次是课程与考试管理模块教师可在此模块创建课程信息、设置考试时间窗口、指定试卷模板并发布至对应班级系统支持批量导入学生名单与分组并为每个考试生成唯一的报名码以便学生通过该码进行在线答题。第三是题库管理模块该模块提供多种题型单选、多选、判断、填空、简答的增删改查接口并支持批量导入与版本控制每道题可关联知识点标签、难度等级与参考答案便于后续试卷生成与统计分析。第四是试卷生成与自适应测试模块系统根据教师设定的抽题规则如随机抽取、分层抽样或基于学生历史成绩的自适应自动生成试卷同时支持多份试卷的批量生成、版本管理与时间限制设置以满足大规模并发考试需求。第五是在线答题与即时提交模块该模块提供响应式答题界面支持文本输入、选择框、多选框、填空以及文件上传等交互方式通过WebSocket实现答案实时提交与状态同步并在答题过程中记录时间戳与操作日志确保考试数据完整性。第六是自动阅卷模块客观题采用精确匹配算法主观题则结合文本相似度计算、规则引擎与知识图谱进行分数评估系统将评分结果存储并生成可追溯的评阅报告同时提供人工复核入口教师可对自动评分结果进行修正并记录修订理由。第七是统计与报表模块系统实时聚合答题时长、正确率、知识点覆盖度等指标并通过可视化仪表盘展示支持按课程、班级或学生维度导出Excel/PDF报表为教学评估与改进提供数据依据。第八是安全与审计模块系统记录所有关键操作日志采用HTTPS、数据加密与日志审计机制保障考试数据的机密性与完整性同时通过异常检测与行为分析防止作弊行为并对考试过程进行实时监控。最后是通知与消息模块支持短信、邮件或即时推送方式向教师和学生发送考试安排、成绩公布及系统维护等重要信息。上述功能模块构成了系统的核心业务流程逻辑清晰、层次分明能够满足在线考试与自动阅卷的全部需求。九、数据库设计字段名(英文) 说明(中文) 大小 类型 主外键 备注User.id 用户编号 BIGINT AUTO_INCREMENTPRIMARY KEYUser.username 用户名 VARCHAR(50) NONEUser.password_hash 密码哈希值 CHAR(64) NONEUser.email 邮箱地址 VARCHAR(100) NONEUser.role_id 角色编号 FK UserRole.role_idUser.created_at 创建时间 DATETIME NONEUser.updated_at 更新时间 DATETIME NONERole.id 角色编号 BIGINT AUTO_INCREMENTPRIMARY KEYRole.name 角色名称 VARCHAR(30) NONEUserRole.user_id 用户编号 FK User.idUserRole.role_id 角色编号 FK Role.idUserRole.created_at 关联时间 DATETIME NONECourse.id 课程编号 BIGINT AUTO_INCREMENTPRIMARY KEYCourse.name 课程名称 VARCHAR(100) NONECourse.description 课程描述 VARCHAR(500) NONECourse.created_at 创建时间 DATETIME NONEExam.id 考试编号 BIGINT AUTO_INCREMENTPRIMARY KEYExam.course_id 所属课程 FK Course.idExam.title 考试标题 VARCHAR(200) NONEExam.start_time 开始时间 DATETIME NONEExam.end_time 结束时间 DATETIME NONEExam.status 状态 INT(1) NONE0未开始1进行中2已结束ExamParticipant.id 报名记录编号 BIGINT AUTO_INCREMENTPRIMARY KEYExamParticipant.exam_id 考试编号 FK Exam.idExamParticipant.user_id 考生编号 FK User.idExamParticipant.status 答题状态 INT(1) NONE0未开始1进行中2已提交ExamParticipant.submitted_at 提交时间 DATETIME NONEQuestionType.id 题型编号 BIGINT AUTO_INCREMENTPRIMARY KEYQuestionType.name 题型名称 VARCHAR(30) NONEKnowledgePoint.id 知识点编号 BIGINT AUTO_INCREMENTPRIMARY KEYKnowledgePoint.name 知识点名称 VARCHAR(100) NONEQuestion.id 题目编号 BIGINT AUTO_INCREMENTPRIMARY KEYQuestion.type_id 题型编号 FK QuestionType.idQuestion.difficulty 难度等级 INT(1) NONE1-5Question.text 题目文本 VARCHAR(1000) NONEQuestion.created_at 创建时间 DATETIME NONEQuestionOption.id 选项编号 BIGINT AUTO_INCREMENTPRIMARY KEYQuestionOption.question_id 所属题目 FK Question.idQuestionOption.text 选项文本 VARCHAR(500) NONEQuestionOption.is_correct BINARY(1) NONE0错误1正确QuestionKnowledge.question_id 题目编号 FK Question.idQuestionKnowledge.knowledge_point_id 知识点编号 FK KnowledgePoint.idExamQuestion.exam_id 考试编号 FK Exam.idExamQuestion.question_id 题目编号 FK Question.idAnswer.id 答卷记录编号 BIGINT AUTO_INCREMENTPRIMARY KEYAnswer.user_id 考生编号 FK User.idAnswer.exam_id 考试编号 FK Exam.idAnswer.question_id 题目编号 FK Question.idAnswer.answer_text VARCHAR(2000) NONE多选用逗号分隔Answer.score 得分 DECIMAL(5,2) NONE0-100Answer.submitted_at DATETIME NONE说明上述表结构遵循第一范式至第三范式所有非主键字段均为原子值通过外键实现实体间的完整性约束多对多关系通过关联表实现答案表中包含得分字段以便后续统计与报表。十、建表语句CREATE DATABASE IF NOT EXISTS online_exam CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE online_exam;-- 角色表CREATE TABLE role (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,name VARCHAR(30) NOT NULL COMMENT 角色名称,PRIMARY KEY (id),UNIQUE KEY uk_role_name (name)) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户角色表;-- 用户表CREATE TABLE user (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,username VARCHAR(50) NOT NULL COMMENT 用户名,password_hash CHAR(64) NOT NULL COMMENT 密码哈希值,email VARCHAR(100) NOT NULL COMMENT 邮箱地址,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间,PRIMARY KEY (id),UNIQUE KEY uk_user_username (username),UNIQUE KEY uk_user_email (email)) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户信息表;-- 用户角色关联表CREATE TABLE user_role (user_id BIGINT UNSIGNED NOT NULL,role_id BIGINT UNSIGNED NOT NULL,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 关联时间,PRIMARY KEY (user_id, role_id),CONSTRAINT fk_user_role_user FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_user_role_role FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户角色关联表;-- 课程表CREATE TABLE course (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,name VARCHAR(100) NOT NULL COMMENT 课程名称,description VARCHAR(500) DEFAULT NULL COMMENT 课程描述,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,PRIMARY KEY (id),UNIQUE KEY uk_course_name (name)) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT课程表;-- 考试表CREATE TABLE exam (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,course_id BIGINT UNSIGNED NOT NULL COMMENT 所属课程,title VARCHAR(200) NOT NULL COMMENT 考试标题,start_time DATETIME NOT NULL COMMENT 开始时间,end_time DATETIME NOT NULL COMMENT 结束时间,status TINYINT(1) NOT NULL DEFAULT 0 COMMENT 状态0未开始1进行中2已结束,PRIMARY KEY (id),KEY idx_exam_course_id (course_id),CONSTRAINT fk_exam_course FOREIGN KEY (course_id) REFERENCES course(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT考试表;-- 考试报名表CREATE TABLE exam_participant (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,exam_id BIGINT UNSIGNED NOT NULL COMMENT 考试编号,user_id BIGINT UNSIGNED NOT NULL COMMENT 考生编号,status TINYINT(1) NOT NULL DEFAULT 0 COMMENT 答题状态0未开始1进行中2已提交,submitted_at DATETIME DEFAULT NULL COMMENT 提交时间,PRIMARY KEY (id),UNIQUE KEY uk_exam_participant_exam_user (exam_id,user_id),KEY idx_exam_participant_user_id (user_id),CONSTRAINT fk_exam_participant_exam FOREIGN KEY (exam_id) REFERENCES exam(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_exam_participant_user FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT考试报名表;-- 题型表CREATE TABLE question_type (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,name VARCHAR(30) NOT NULL COMMENT 题型名称,PRIMARY KEY (id),UNIQUE KEY uk_question_type_name (name)) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT题型表;-- 知识点表CREATE TABLE knowledge_point (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,name VARCHAR(100) NOT NULL COMMENT 知识点名称,PRIMARY KEY (id),UNIQUE KEY uk_knowledge_point_name (name)) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT知识点表;-- 题目表CREATE TABLE question (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,type_id BIGINT UNSIGNED NOT NULL COMMENT 题型编号,difficulty TINYINT(1) NOT NULL DEFAULT 3 COMMENT 难度等级1-5,text VARCHAR(1000) NOT NULL COMMENT 题目文本,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,PRIMARY KEY (id),KEY idx_question_type_id (type_id),CONSTRAINT fk_question_type FOREIGN KEY (type_id) REFERENCES question_type(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT题目表;-- 题目选项表CREATE TABLE question_option (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,question_id BIGINT UNSIGNED NOT NULL COMMENT 所属题目,text VARCHAR(500) NOT NULL COMMENT 选项文本,is_correct TINYINT(1) NOT NULL DEFAULT 0 COMMENT 是否正确0错误1正确,PRIMARY KEY (id),KEY idx_question_option_question_id (question_id),CONSTRAINT fk_question_option_question FOREIGN KEY (question_id) REFERENCES question(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT题目选项表;-- 题目-知识点关联表CREATE TABLE question_knowledge (question_id BIGINT UNSIGNED NOT NULL,knowledge_point_id BIGINT UNSIGNED NOT NULL,PRIMARY KEY (question_id, knowledge_point_id),KEY idx_question_knowledge_knowledge_point_id (knowledge_point_id),CONSTRAINT fk_question_knowledge_question FOREIGN KEY (question_id) REFERENCES question(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_question_knowledge_knowledge_point FOREIGN KEY (knowledge_point_id) REFERENCES knowledge_point(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT题目-知识点关联表;-- 考试-题目关联表CREATE TABLE exam_question (exam_id BIGINT UNSIGNED NOT NULL,question_id BIGINT UNSIGNED NOT NULL,PRIMARY KEY (exam_id, question_id),KEY idx_exam_question_question_id (question_id),CONSTRAINT fk_exam_question_exam FOREIGN KEY (exam_id) REFERENCES exam(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_exam_question_question FOREIGN KEY (question_id) REFERENCES question(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT考试-题目关联表;-- 答卷表CREATE TABLE answer (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,user_id BIGINT UNSIGNED NOT NULL COMMENT 考生编号,exam_id BIGINT UNSIGNED NOT NULL COMMENT 考试编号,question_id BIGINT UNSIGNED NOT NULL COMMENT 题目编号,answer_text VARCHAR(2000) DEFAULT NULL COMMENT 答案文本多选用逗号分隔,score DECIMAL(5,2) DEFAULT NULL COMMENT 得分0-100,submitted_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 提交时间,PRIMARY KEY (id),UNIQUE KEY uk_answer_user_exam_question (user_id,exam_id,question_id),KEY idx_answer_user_id (user_id),KEY idx_answer_exam_id (exam_id),CONSTRAINT fk_answer_user FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_answer_exam FOREIGN KEY (exam_id) REFERENCES exam(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_answer_question FOREIGN KEY (question_id) REFERENCES question(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT答卷表;-- 索引优化CREATE INDEX idx_user_role_user_id ON user_role(user_id);CREATE INDEX idx_user_role_role_id ON user_role(role_id);CREATE INDEX idx_exam_participant_exam_id ON exam_participant(exam_id);CREATE INDEX idx_exam_participant_status ON exam_participant(status);CREATE INDEX idx_question_type_id_difficulty ON question(type_id,difficulty);CREATE INDEX idx_answer_score ON answer(score);-- 结束语-- 以上DDL已满足第一范式至第三范式所有外键均已定义完整索引覆盖常用查询路径。文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方获取联系方式
返回列表