122 lines
6.0 KiB
MySQL
122 lines
6.0 KiB
MySQL
|
|
-- 创建测试相关表
|
||
|
|
-- Create test-related tables
|
||
|
|
|
||
|
|
-- 测试模板表
|
||
|
|
CREATE TABLE IF NOT EXISTS test_templates (
|
||
|
|
id VARCHAR(36) PRIMARY KEY,
|
||
|
|
title VARCHAR(255) NOT NULL COMMENT '模板标题',
|
||
|
|
description TEXT COMMENT '模板描述',
|
||
|
|
type VARCHAR(50) NOT NULL COMMENT '测试类型: quick, comprehensive, daily, custom',
|
||
|
|
difficulty VARCHAR(50) COMMENT '难度: beginner, intermediate, advanced',
|
||
|
|
duration INT COMMENT '测试时长(秒)',
|
||
|
|
total_questions INT COMMENT '总题目数',
|
||
|
|
passing_score INT COMMENT '及格分数',
|
||
|
|
max_score INT COMMENT '最高分数',
|
||
|
|
question_config JSON COMMENT '题目配置',
|
||
|
|
skill_distribution JSON COMMENT '技能分布',
|
||
|
|
is_active BOOLEAN DEFAULT TRUE COMMENT '是否启用',
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
INDEX idx_type (type),
|
||
|
|
INDEX idx_difficulty (difficulty),
|
||
|
|
INDEX idx_is_active (is_active)
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试模板表';
|
||
|
|
|
||
|
|
-- 测试题目表
|
||
|
|
CREATE TABLE IF NOT EXISTS test_questions (
|
||
|
|
id VARCHAR(36) PRIMARY KEY,
|
||
|
|
template_id VARCHAR(36) NOT NULL COMMENT '模板ID',
|
||
|
|
question_type VARCHAR(50) NOT NULL COMMENT '题目类型: single_choice, multiple_choice, true_false, fill_blank, short_answer',
|
||
|
|
skill_type VARCHAR(50) NOT NULL COMMENT '技能类型: vocabulary, grammar, reading, listening, speaking, writing',
|
||
|
|
difficulty VARCHAR(50) COMMENT '难度',
|
||
|
|
content TEXT NOT NULL COMMENT '题目内容',
|
||
|
|
options JSON COMMENT '选项(JSON数组)',
|
||
|
|
correct_answer TEXT COMMENT '正确答案',
|
||
|
|
explanation TEXT COMMENT '答案解析',
|
||
|
|
points INT DEFAULT 1 COMMENT '分值',
|
||
|
|
order_index INT COMMENT '题目顺序',
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
INDEX idx_template_id (template_id),
|
||
|
|
INDEX idx_question_type (question_type),
|
||
|
|
INDEX idx_skill_type (skill_type),
|
||
|
|
INDEX idx_difficulty (difficulty),
|
||
|
|
FOREIGN KEY (template_id) REFERENCES test_templates(id) ON DELETE CASCADE
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试题目表';
|
||
|
|
|
||
|
|
-- 测试会话表
|
||
|
|
CREATE TABLE IF NOT EXISTS test_sessions (
|
||
|
|
id VARCHAR(36) PRIMARY KEY,
|
||
|
|
template_id VARCHAR(36) NOT NULL COMMENT '模板ID',
|
||
|
|
user_id VARCHAR(36) NOT NULL COMMENT '用户ID',
|
||
|
|
status VARCHAR(50) NOT NULL DEFAULT 'pending' COMMENT '状态: pending, in_progress, paused, completed, abandoned',
|
||
|
|
start_time TIMESTAMP NULL COMMENT '开始时间',
|
||
|
|
end_time TIMESTAMP NULL COMMENT '结束时间',
|
||
|
|
paused_at TIMESTAMP NULL COMMENT '暂停时间',
|
||
|
|
time_remaining INT COMMENT '剩余时间(秒)',
|
||
|
|
current_question_index INT DEFAULT 0 COMMENT '当前题目索引',
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
INDEX idx_template_id (template_id),
|
||
|
|
INDEX idx_user_id (user_id),
|
||
|
|
INDEX idx_status (status),
|
||
|
|
INDEX idx_created_at (created_at),
|
||
|
|
FOREIGN KEY (template_id) REFERENCES test_templates(id) ON DELETE CASCADE
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试会话表';
|
||
|
|
|
||
|
|
-- 测试会话题目关联表
|
||
|
|
CREATE TABLE IF NOT EXISTS test_session_questions (
|
||
|
|
session_id VARCHAR(36) NOT NULL COMMENT '会话ID',
|
||
|
|
question_id VARCHAR(36) NOT NULL COMMENT '题目ID',
|
||
|
|
order_index INT COMMENT '题目顺序',
|
||
|
|
PRIMARY KEY (session_id, question_id),
|
||
|
|
INDEX idx_session_id (session_id),
|
||
|
|
INDEX idx_question_id (question_id),
|
||
|
|
FOREIGN KEY (session_id) REFERENCES test_sessions(id) ON DELETE CASCADE,
|
||
|
|
FOREIGN KEY (question_id) REFERENCES test_questions(id) ON DELETE CASCADE
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试会话题目关联表';
|
||
|
|
|
||
|
|
-- 测试答案表
|
||
|
|
CREATE TABLE IF NOT EXISTS test_answers (
|
||
|
|
id VARCHAR(36) PRIMARY KEY,
|
||
|
|
session_id VARCHAR(36) NOT NULL COMMENT '会话ID',
|
||
|
|
question_id VARCHAR(36) NOT NULL COMMENT '题目ID',
|
||
|
|
answer TEXT COMMENT '用户答案',
|
||
|
|
is_correct BOOLEAN COMMENT '是否正确',
|
||
|
|
score INT DEFAULT 0 COMMENT '得分',
|
||
|
|
time_spent INT COMMENT '答题用时(秒)',
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
INDEX idx_session_id (session_id),
|
||
|
|
INDEX idx_question_id (question_id),
|
||
|
|
UNIQUE KEY uk_session_question (session_id, question_id),
|
||
|
|
FOREIGN KEY (session_id) REFERENCES test_sessions(id) ON DELETE CASCADE,
|
||
|
|
FOREIGN KEY (question_id) REFERENCES test_questions(id) ON DELETE CASCADE
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试答案表';
|
||
|
|
|
||
|
|
-- 测试结果表
|
||
|
|
CREATE TABLE IF NOT EXISTS test_results (
|
||
|
|
id VARCHAR(36) PRIMARY KEY,
|
||
|
|
session_id VARCHAR(36) NOT NULL UNIQUE COMMENT '会话ID',
|
||
|
|
user_id VARCHAR(36) NOT NULL COMMENT '用户ID',
|
||
|
|
template_id VARCHAR(36) NOT NULL COMMENT '模板ID',
|
||
|
|
total_score INT COMMENT '总得分',
|
||
|
|
max_score INT COMMENT '最高分',
|
||
|
|
percentage DECIMAL(5,2) COMMENT '得分百分比',
|
||
|
|
correct_count INT COMMENT '正确题数',
|
||
|
|
wrong_count INT COMMENT '错误题数',
|
||
|
|
skipped_count INT COMMENT '跳过题数',
|
||
|
|
time_spent INT COMMENT '总用时(秒)',
|
||
|
|
skill_scores JSON COMMENT '各技能得分',
|
||
|
|
passed BOOLEAN COMMENT '是否通过',
|
||
|
|
completed_at TIMESTAMP NOT NULL COMMENT '完成时间',
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
INDEX idx_session_id (session_id),
|
||
|
|
INDEX idx_user_id (user_id),
|
||
|
|
INDEX idx_template_id (template_id),
|
||
|
|
INDEX idx_completed_at (completed_at),
|
||
|
|
FOREIGN KEY (session_id) REFERENCES test_sessions(id) ON DELETE CASCADE,
|
||
|
|
FOREIGN KEY (template_id) REFERENCES test_templates(id) ON DELETE CASCADE
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试结果表';
|