init
This commit is contained in:
121
serve/migrations/create_test_tables.sql
Normal file
121
serve/migrations/create_test_tables.sql
Normal file
@@ -0,0 +1,121 @@
|
||||
-- 创建测试相关表
|
||||
-- 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='测试结果表';
|
||||
Reference in New Issue
Block a user