create_all_tables.sql 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. -- AI学习搭子项目 - MySQL数据库建表脚本
  2. -- 创建所有9张表的完整SQL语句
  3. -- 1. 创建用户信息表
  4. CREATE TABLE user_info (
  5. user_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
  6. username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
  7. password VARCHAR(255) NOT NULL COMMENT '密码',
  8. grade VARCHAR(20) COMMENT '年级',
  9. avatar VARCHAR(255) COMMENT '头像路径',
  10. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  11. update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
  13. -- 2. 创建学习目标表
  14. CREATE TABLE goals (
  15. goal_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '目标ID',
  16. user_id BIGINT NOT NULL COMMENT '用户ID',
  17. type VARCHAR(50) NOT NULL COMMENT '目标类型',
  18. knowledge_point TEXT COMMENT '知识点',
  19. difficulty VARCHAR(20) COMMENT '难度',
  20. total_quantity INT DEFAULT 0 COMMENT '总题目数量',
  21. completed_quantity INT DEFAULT 0 COMMENT '已完成数量',
  22. estimated_time INT COMMENT '预估时间(分钟)',
  23. start_time TIMESTAMP COMMENT '开始时间',
  24. status TINYINT DEFAULT 0 COMMENT '状态(0:未开始,1:进行中,2:已完成)',
  25. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  26. complete_time TIMESTAMP COMMENT '完成时间',
  27. answer_duration INT DEFAULT 0 COMMENT '答题总时长(秒)',
  28. FOREIGN KEY (user_id) REFERENCES user_info(user_id) ON DELETE CASCADE
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习目标表';
  30. -- 3. 创建目标详情表
  31. CREATE TABLE goal_of_detail (
  32. detail_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '详情ID',
  33. goal_id BIGINT NOT NULL COMMENT '目标ID',
  34. type VARCHAR(20) COMMENT '题目类型(选择题、填空题、单词等)',
  35. question TEXT COMMENT '题目内容',
  36. options JSON COMMENT '选项(JSON格式)',
  37. answer TEXT COMMENT '正确答案',
  38. difficulty VARCHAR(20) COMMENT '难度',
  39. knowledge_point VARCHAR(100) COMMENT '知识点',
  40. explanation TEXT COMMENT '解析',
  41. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  42. FOREIGN KEY (goal_id) REFERENCES goals(goal_id) ON DELETE CASCADE
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='目标详情表';
  44. -- 4. 创建用户答题记录表
  45. CREATE TABLE user_answer (
  46. answer_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '答题记录ID',
  47. user_id BIGINT NOT NULL COMMENT '用户ID',
  48. goal_id BIGINT NOT NULL COMMENT '目标ID',
  49. detail_id BIGINT NOT NULL COMMENT '题目详情ID',
  50. user_answer TEXT COMMENT '用户答案',
  51. is_correct BOOLEAN DEFAULT FALSE COMMENT '是否正确',
  52. answer_time INT DEFAULT 0 COMMENT '答题用时(秒)',
  53. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '答题时间',
  54. FOREIGN KEY (user_id) REFERENCES user_info(user_id) ON DELETE CASCADE,
  55. FOREIGN KEY (goal_id) REFERENCES goals(goal_id) ON DELETE CASCADE,
  56. FOREIGN KEY (detail_id) REFERENCES goal_of_detail(detail_id) ON DELETE CASCADE
  57. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户答题记录表';
  58. -- 5. 创建学习报告表
  59. CREATE TABLE study_report (
  60. report_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '报告ID',
  61. goal_id BIGINT NOT NULL COMMENT '目标ID',
  62. user_id BIGINT NOT NULL COMMENT '用户ID',
  63. accuracy_rate DECIMAL(5,2) DEFAULT 0.00 COMMENT '正确率',
  64. total_questions INT DEFAULT 0 COMMENT '总题数',
  65. correct_answers INT DEFAULT 0 COMMENT '正确题数',
  66. total_time INT DEFAULT 0 COMMENT '总用时(秒)',
  67. knowledge_analysis JSON COMMENT '知识点分析(JSON格式)',
  68. difficulty_analysis JSON COMMENT '难度分析(JSON格式)',
  69. improvement_suggestions TEXT COMMENT '改进建议',
  70. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  71. FOREIGN KEY (goal_id) REFERENCES goals(goal_id) ON DELETE CASCADE,
  72. FOREIGN KEY (user_id) REFERENCES user_info(user_id) ON DELETE CASCADE
  73. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习报告表';
  74. -- 6. 创建AI对话记录表
  75. CREATE TABLE ai_chat (
  76. chat_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '聊天ID',
  77. user_id BIGINT NOT NULL COMMENT '用户ID',
  78. content TEXT NOT NULL COMMENT '对话内容',
  79. type VARCHAR(20) NOT NULL COMMENT '消息类型(user/assistant)',
  80. timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '时间戳',
  81. FOREIGN KEY (user_id) REFERENCES user_info(user_id) ON DELETE CASCADE
  82. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI对话记录表';
  83. -- 7. 创建成就表
  84. CREATE TABLE achievements (
  85. achievement_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '成就ID',
  86. user_id BIGINT NOT NULL COMMENT '用户ID',
  87. type VARCHAR(50) NOT NULL COMMENT '成就类型',
  88. name VARCHAR(100) NOT NULL COMMENT '成就名称',
  89. description TEXT COMMENT '成就描述',
  90. icon VARCHAR(255) COMMENT '成就图标',
  91. progress INT DEFAULT 0 COMMENT '当前进度',
  92. target INT DEFAULT 1 COMMENT '目标值',
  93. is_unlocked BOOLEAN DEFAULT FALSE COMMENT '是否已解锁',
  94. unlock_time TIMESTAMP COMMENT '解锁时间',
  95. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  96. FOREIGN KEY (user_id) REFERENCES user_info(user_id) ON DELETE CASCADE
  97. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成就表';
  98. -- 8. 创建学习统计表
  99. CREATE TABLE study_stats (
  100. stats_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '统计ID',
  101. user_id BIGINT NOT NULL COMMENT '用户ID',
  102. daily_study_time JSON COMMENT '每日学习时长(JSON格式)',
  103. subject_study_time JSON COMMENT '各科目学习时长(JSON格式)',
  104. completed_goals_count INT DEFAULT 0 COMMENT '完成目标数',
  105. total_study_time INT DEFAULT 0 COMMENT '总学习时长(分钟)',
  106. average_accuracy DECIMAL(5,2) DEFAULT 0.00 COMMENT '平均正确率',
  107. streak_days INT DEFAULT 0 COMMENT '连续学习天数',
  108. last_study_date DATE COMMENT '最后学习日期',
  109. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  110. update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  111. FOREIGN KEY (user_id) REFERENCES user_info(user_id) ON DELETE CASCADE
  112. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习统计表';
  113. -- 9. 创建系统设置表
  114. CREATE TABLE system_settings (
  115. setting_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '设置ID',
  116. user_id BIGINT NOT NULL COMMENT '用户ID',
  117. study_reminder_enabled BOOLEAN DEFAULT TRUE COMMENT '学习提醒开关',
  118. focus_mode_enabled BOOLEAN DEFAULT TRUE COMMENT '专注模式开关',
  119. data_sync_enabled BOOLEAN DEFAULT FALSE COMMENT '数据同步开关',
  120. privacy_protection_enabled BOOLEAN DEFAULT TRUE COMMENT '隐私保护开关',
  121. night_mode_enabled BOOLEAN DEFAULT FALSE COMMENT '夜间模式开关',
  122. reminder_time VARCHAR(10) DEFAULT '09:00' COMMENT '提醒时间',
  123. create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  124. update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  125. FOREIGN KEY (user_id) REFERENCES user_info(user_id) ON DELETE CASCADE
  126. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统设置表';
  127. -- 创建索引以提高查询性能
  128. CREATE INDEX idx_goals_user_id ON goals(user_id);
  129. CREATE INDEX idx_goals_status ON goals(status);
  130. CREATE INDEX idx_goal_detail_goal_id ON goal_of_detail(goal_id);
  131. CREATE INDEX idx_user_answer_user_id ON user_answer(user_id);
  132. CREATE INDEX idx_user_answer_goal_id ON user_answer(goal_id);
  133. CREATE INDEX idx_study_report_user_id ON study_report(user_id);
  134. CREATE INDEX idx_ai_chat_user_id ON ai_chat(user_id);
  135. CREATE INDEX idx_achievements_user_id ON achievements(user_id);
  136. CREATE INDEX idx_study_stats_user_id ON study_stats(user_id);
  137. CREATE INDEX idx_system_settings_user_id ON system_settings(user_id);
  138. -- 插入初始数据(可选)
  139. -- 创建默认管理员用户
  140. INSERT INTO user_info (username, password, grade) VALUES
  141. ('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVEFDa', '管理员');
  142. -- 显示创建结果
  143. SELECT 'AI学习搭子数据库表创建完成!' AS message;
  144. SHOW TABLES;