在线答题系统数据库设计文档

1. 概述

本文档描述了在线答题系统的数据库设计,包含题目管理、试卷分类、考试记录和用户答题等核心功能的数据表结构。

2. 数据库表结构

2.1 题目表 (question)

功能说明:存储所有题目的基本信息

字段名 类型 约束 说明
id BIGINT PRIMARY KEY, AUTO_INCREMENT 主键ID
question_no VARCHAR(50) 题目编号
content TEXT NOT NULL 题目内容
question_type TINYINT NOT NULL, DEFAULT 1 题目类型:1-单选,2-多选,3-案例分析,4-论文题
answer_analysis TEXT 答案解析(HTML格式)
difficulty TINYINT DEFAULT 3 难度:1-易,2-中,3-难
knowledge_area VARCHAR(100) INDEX 知识领域
chapter VARCHAR(100) 所属章节
is_official BOOLEAN DEFAULT false 是否官方真题
status TINYINT NOT NULL, DEFAULT 1 状态:1-正常,0-禁用
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间

索引

  • 主键索引:id
  • 普通索引:idx_knowledge_area (knowledge_area)

2.2 选项表 (question_option)

功能说明:存储题目的选项信息

字段名 类型 约束 说明
id BIGINT PRIMARY KEY, AUTO_INCREMENT 主键ID
question_id BIGINT NOT NULL, INDEX 题目ID
option_no VARCHAR(10) NOT NULL 选项编号
content TEXT NOT NULL 选项内容
is_correct BOOLEAN DEFAULT false 是否为正确选项
analysis TEXT 选项解析
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间

索引

  • 主键索引:id
  • 普通索引:idx_question_id (question_id)

2.3 试卷表 (exam_paper)

功能说明:存储试卷的基本信息

字段名 类型 约束 说明
id BIGINT PRIMARY KEY, AUTO_INCREMENT 主键ID
paper_code VARCHAR(50) 试卷代码
paper_name VARCHAR(255) 试卷名称,如:2025年上半年
exam_level TINYINT DEFAULT 3 考试级别:3-高级,2-中级,1-初级
subject_id BIGINT DEFAULT 1 科目ID:1-信息系统项目管理师,2-系统分析架构师
total_num INT DEFAULT 0 总题数
total_score DECIMAL(8,2) DEFAULT 75.0 试卷总分
pass_score DECIMAL(5,2) DEFAULT 45.0 及格分数线
duration INT 考试时长(分钟)
is_simulation BOOLEAN DEFAULT false 是否模拟试卷
status TINYINT DEFAULT 1 状态:1-草稿,2-已发布,3-已归档
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间

2.4 试卷题目关联表 (exam_paper_question)

功能说明:建立试卷与题目的关联关系

字段名 类型 约束 说明
id BIGINT PRIMARY KEY, AUTO_INCREMENT 主键ID
paper_id BIGINT NOT NULL, INDEX 试卷ID
question_id BIGINT NOT NULL 题目ID
question_score DECIMAL(5,2) NOT NULL 题目在试卷中的分值
question_order INT NOT NULL, INDEX 题目顺序
question_group VARCHAR(50) 题组(案例分析题专用)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间

索引

  • 主键索引:id
  • 唯一索引:uk_paper_question (paper_id, question_id)
  • 普通索引:idx_paper (paper_id), idx_question_order (question_order)

2.5 试卷分类表 (exam_paper_category)

功能说明:组织试卷的分类结构

字段名 类型 约束 说明
id BIGINT PRIMARY KEY, AUTO_INCREMENT 主键ID
name VARCHAR(100) NOT NULL 分类名称
parent_id BIGINT INDEX 父分类ID(根节点为NULL)
paper_id BIGINT 关联的试卷ID(仅叶子节点)
level INT NOT NULL 层级:1-根节点 2-子节点 3-叶子节点
order_num INT DEFAULT 0 同级排序序号
status INT DEFAULT 1 是否有效:1-有效;0-无效
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间

索引

  • 主键索引:id
  • 普通索引:idx_parent_id (parent_id)

2.6 用户考试记录表 (user_exam_record)

功能说明:记录用户每次考试的整体情况

字段名 类型 约束 说明
id BIGINT PRIMARY KEY, AUTO_INCREMENT 考试记录ID
user_id VARCHAR(32) NOT NULL, INDEX 用户ID
paper_id BIGINT NOT NULL, INDEX 试卷ID
start_time DATETIME NOT NULL, INDEX 开始时间
end_time DATETIME NOT NULL 结束时间
duration INT NOT NULL 实际考试时长(秒)
total_score DECIMAL(5,2) NOT NULL 试卷总分
user_score DECIMAL(5,2) NOT NULL 用户得分
pass_status TINYINT NOT NULL, DEFAULT 0 0-未通过,1-通过
status TINYINT NOT NULL, DEFAULT 1 1-进行中,2-已提交,3-超时结束
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间

索引

  • 主键索引:id
  • 普通索引:idx_user (user_id), idx_paper (paper_id), idx_start_time (start_time)

2.7 用户答题详情表 (user_answer_detail)

功能说明:记录用户每道题的具体答题情况

字段名 类型 约束 说明
id BIGINT PRIMARY KEY, AUTO_INCREMENT 答题详情ID
user_id VARCHAR(32) NOT NULL 用户ID
record_id BIGINT NOT NULL, INDEX 考试记录ID
paper_id BIGINT NOT NULL 试卷ID
question_id BIGINT NOT NULL, INDEX 题目ID
user_answer VARCHAR(500) 用户答案(选项:AB/文本/文件路径)
is_correct INT 是否答对:0-错;1-对
question_score DECIMAL(5,2) NOT NULL 题目分值
user_score DECIMAL(5,2) NOT NULL 用户本题得分
spent_time INT NOT NULL 本题耗时(秒)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 创建时间
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间

索引

  • 主键索引:id
  • 普通索引:idx_record (record_id), idx_question (question_id)
  • 唯一索引:uk_record_id_paper_id_question_id (record_id, paper_id, question_id)

3. 核心业务关系

3.1 题目管理流程

题目表 (question) ← 选项表 (question_option)
                    ↓
试卷题目关联表 (exam_paper_question) → 试卷表 (exam_paper)

在这里插入图片描述

3.2 考试流程

用户考试记录表 (user_exam_record)
        ↓
用户答题详情表 (user_answer_detail) → 题目表 (question)
        ↓
        试卷表 (exam_paper)

3.3 分类组织

试卷分类表 (exam_paper_category) → 试卷表 (exam_paper)

4. 关键设计特点

  1. 灵活的题目类型支持:支持单选、多选、案例分析和论文题四种类型
  2. 完整的考试流程记录:从考试开始到结束,包括每道题的答题详情
  3. 多级试卷分类:支持树状结构的试卷分类管理
  4. 详细的统计分析:通过答题详情表可以分析用户的答题习惯和知识掌握情况
  5. 扩展性设计:预留了扩展字段,如ext_info等

5. 性能考虑

  • 为频繁查询的字段建立了索引
  • 使用适当的数据类型减少存储空间
  • 通过关联表设计避免数据冗余
  • 时间字段使用TIMESTAMP类型,支持自动更新
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐