第一版提交,答题功能OK,题库管理待完善
This commit is contained in:
131
api/database/init.sql
Normal file
131
api/database/init.sql
Normal file
@@ -0,0 +1,131 @@
|
||||
-- 用户表
|
||||
CREATE TABLE users (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL CHECK(length(name) >= 2 AND length(name) <= 20),
|
||||
phone TEXT UNIQUE NOT NULL CHECK(length(phone) = 11 AND phone LIKE '1%' AND substr(phone, 2, 1) BETWEEN '3' AND '9'),
|
||||
password TEXT NOT NULL DEFAULT '',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 创建用户表索引
|
||||
CREATE INDEX idx_users_phone ON users(phone);
|
||||
CREATE INDEX idx_users_created_at ON users(created_at);
|
||||
|
||||
-- 题目表
|
||||
CREATE TABLE questions (
|
||||
id TEXT PRIMARY KEY,
|
||||
content TEXT NOT NULL,
|
||||
type TEXT NOT NULL CHECK(type IN ('single', 'multiple', 'judgment', 'text')),
|
||||
options TEXT, -- JSON格式存储选项
|
||||
answer TEXT NOT NULL,
|
||||
score INTEGER NOT NULL CHECK(score > 0),
|
||||
category TEXT NOT NULL DEFAULT '通用',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 创建题目表索引
|
||||
CREATE INDEX idx_questions_type ON questions(type);
|
||||
CREATE INDEX idx_questions_score ON questions(score);
|
||||
CREATE INDEX idx_questions_category ON questions(category);
|
||||
|
||||
-- 题目类别表
|
||||
CREATE TABLE question_categories (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT UNIQUE NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT OR IGNORE INTO question_categories (id, name) VALUES ('default', '通用');
|
||||
|
||||
-- 考试科目表
|
||||
CREATE TABLE exam_subjects (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT UNIQUE NOT NULL,
|
||||
type_ratios TEXT NOT NULL,
|
||||
category_ratios TEXT NOT NULL,
|
||||
total_score INTEGER NOT NULL,
|
||||
duration_minutes INTEGER NOT NULL DEFAULT 60,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 考试任务表
|
||||
CREATE TABLE exam_tasks (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
subject_id TEXT NOT NULL,
|
||||
start_at DATETIME NOT NULL,
|
||||
end_at DATETIME NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (subject_id) REFERENCES exam_subjects(id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_exam_tasks_subject_id ON exam_tasks(subject_id);
|
||||
|
||||
-- 考试任务参与用户表
|
||||
CREATE TABLE exam_task_users (
|
||||
id TEXT PRIMARY KEY,
|
||||
task_id TEXT NOT NULL,
|
||||
user_id TEXT NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(task_id, user_id),
|
||||
FOREIGN KEY (task_id) REFERENCES exam_tasks(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX idx_exam_task_users_task_id ON exam_task_users(task_id);
|
||||
CREATE INDEX idx_exam_task_users_user_id ON exam_task_users(user_id);
|
||||
|
||||
-- 答题记录表
|
||||
CREATE TABLE quiz_records (
|
||||
id TEXT PRIMARY KEY,
|
||||
user_id TEXT NOT NULL,
|
||||
subject_id TEXT,
|
||||
task_id TEXT,
|
||||
total_score INTEGER NOT NULL,
|
||||
correct_count INTEGER NOT NULL,
|
||||
total_count INTEGER NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id),
|
||||
FOREIGN KEY (subject_id) REFERENCES exam_subjects(id),
|
||||
FOREIGN KEY (task_id) REFERENCES exam_tasks(id)
|
||||
);
|
||||
|
||||
-- 创建答题记录表索引
|
||||
CREATE INDEX idx_quiz_records_user_id ON quiz_records(user_id);
|
||||
CREATE INDEX idx_quiz_records_created_at ON quiz_records(created_at);
|
||||
CREATE INDEX idx_quiz_records_subject_id ON quiz_records(subject_id);
|
||||
CREATE INDEX idx_quiz_records_task_id ON quiz_records(task_id);
|
||||
|
||||
-- 答题答案表
|
||||
CREATE TABLE quiz_answers (
|
||||
id TEXT PRIMARY KEY,
|
||||
record_id TEXT NOT NULL,
|
||||
question_id TEXT NOT NULL,
|
||||
user_answer TEXT NOT NULL,
|
||||
score INTEGER NOT NULL,
|
||||
is_correct BOOLEAN NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (record_id) REFERENCES quiz_records(id),
|
||||
FOREIGN KEY (question_id) REFERENCES questions(id)
|
||||
);
|
||||
|
||||
-- 创建答题答案表索引
|
||||
CREATE INDEX idx_quiz_answers_record_id ON quiz_answers(record_id);
|
||||
CREATE INDEX idx_quiz_answers_question_id ON quiz_answers(question_id);
|
||||
|
||||
-- 系统配置表
|
||||
CREATE TABLE system_configs (
|
||||
id TEXT PRIMARY KEY,
|
||||
config_type TEXT UNIQUE NOT NULL,
|
||||
config_value TEXT NOT NULL,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 初始化抽题配置
|
||||
INSERT INTO system_configs (id, config_type, config_value) VALUES
|
||||
('1', 'quiz_config', '{"singleRatio":40,"multipleRatio":30,"judgmentRatio":20,"textRatio":10,"totalScore":100}');
|
||||
|
||||
-- 初始化管理员账号
|
||||
INSERT INTO system_configs (id, config_type, config_value) VALUES
|
||||
('2', 'admin_user', '{"username":"admin","password":"admin123"}');
|
||||
Reference in New Issue
Block a user