本文档记录了AI学习搭子系统中的数据库表结构和字段说明。
jdbc:h2:file:./data/testdb
sa
http://localhost:8080/api/h2-console
存储中小学学习搭子系统的用户基本信息,包括用户名、密码、年级、头像等。
字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 主键 | 唯一 | 说明 |
---|---|---|---|---|---|---|---|
user_id | BIGINT | - | NOT NULL | AUTO_INCREMENT | ✓ | - | 用户ID,主键,自增 |
username | VARCHAR | 50 | NOT NULL | - | - | ✓ | 用户名,唯一,2-50个字符 |
password | VARCHAR | 255 | NOT NULL | - | - | - | 用户密码,至少6个字符 |
avatar_url | VARCHAR | 255 | NULL | - | - | - | 用户头像URL |
grade | VARCHAR | 20 | NULL | - | - | - | 年级信息 |
create_time | TIMESTAMP | - | NOT NULL | - | - | - | 创建时间,自动设置 |
update_time | TIMESTAMP | - | NULL | - | - | - | 更新时间,自动更新 |
uploads/avatars/
目录存储用户的学习目标信息,包括目标内容、学科、难度、进度等。
字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 主键 | 说明 |
---|---|---|---|---|---|---|
goal_id | BIGINT | - | NOT NULL | AUTO_INCREMENT | ✓ | 目标ID,主键,自增 |
user_id | BIGINT | - | NOT NULL | - | - | 用户ID,外键关联user_info表 |
subject | VARCHAR | 50 | NOT NULL | - | - | 学科名称 |
goal_type | VARCHAR | 50 | NOT NULL | - | - | 目标类型 |
goal_content | TEXT | - | NULL | - | - | 目标内容描述 |
difficulty | VARCHAR | 20 | NULL | - | - | 难度等级 |
total_quantity | INT | - | NULL | 0 | - | 目标总数量 |
completed_quantity | INT | - | NULL | 0 | - | 已完成数量 |
estimated_time | INT | - | NULL | - | - | 预估完成时间(分钟) |
start_time | TIMESTAMP | - | NULL | - | - | 开始执行时间 |
status | TINYINT | - | NULL | 0 | - | 目标状态 |
create_time | TIMESTAMP | - | NULL | CURRENT_TIMESTAMP | - | 创建时间 |
complete_time | TIMESTAMP | - | NULL | - | - | 完成时间 |
answer_duration | INT | - | NULL | 0 | - | 答题时长(秒) |
DAILY
: 每日目标WEEKLY
: 每周目标MONTHLY
: 每月目标EASY
: 简单MEDIUM
: 中等HARD
: 困难0
: PENDING(待执行)1
: IN_PROGRESS(进行中)2
: COMPLETED(已完成)3
: CANCELLED(已取消)目标状态流转:
进度计算:
时间管理:
存储AI生成的题目详情信息,与学习目标表关联,支持选择题、填空题、单词题等多种题型。
字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 主键 | 说明 |
---|---|---|---|---|---|---|
detail_id | BIGINT | - | NOT NULL | AUTO_INCREMENT | ✓ | 题目ID,主键,自增 |
goal_id | BIGINT | - | NOT NULL | - | - | 目标ID,外键关联goals表 |
subject | VARCHAR | 50 | NOT NULL | - | - | 学科名称 |
content_type | INT | - | NOT NULL | - | - | 题目类型:1-选择题,2-填空题,3-单词 |
content | TEXT | - | NOT NULL | - | - | 题目内容 |
options | TEXT | - | NULL | - | - | 选择题选项,JSON格式存储 |
answer | TEXT | - | NOT NULL | - | - | 题目答案 |
difficulty | VARCHAR | 20 | NULL | - | - | 难度等级 |
knowledge_point | VARCHAR | 100 | NULL | - | - | 知识点 |
create_time | TIMESTAMP | - | NOT NULL | CURRENT_TIMESTAMP | - | 创建时间 |
1
: 选择题(包含多个选项)2
: 填空题(需要填写答案)3
: 单词题(英语单词练习)简单
: 基础题目中等
: 中等难度题目困难
: 高难度题目题目生成规则:
题目类型说明:
数据关联:
存储用户在学习过程中的答题记录,包括用户答案、正确性、用时等信息,用于学习进度跟踪和统计分析。
字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 主键 | 说明 |
---|---|---|---|---|---|---|
answer_id | BIGINT | - | NOT NULL | AUTO_INCREMENT | ✓ | 记录ID,主键,自增 |
user_id | BIGINT | - | NOT NULL | - | - | 用户ID,外键关联user_info表 |
goal_id | BIGINT | - | NOT NULL | - | - | 目标ID,外键关联goals表 |
content_id | BIGINT | - | NOT NULL | - | - | 题目ID,外键关联goal_of_detail表 |
user_answer | TEXT | - | NULL | - | - | 用户提交的答案 |
is_correct | TINYINT | - | NULL | - | - | 是否正确(0-错误,1-正确) |
spend_time | INT | - | NULL | - | - | 单题用时(秒) |
answer_time | TIMESTAMP | - | NULL | CURRENT_TIMESTAMP | - | 答题时间,自动设置 |
0
: 错误1
: 正确NULL
: 未评判答题记录创建:
数据统计:
数据关联:
goals.user_id
→ user_info.user_id
(多对一关系)
goal_of_detail.goal_id
→ goals.goal_id
(多对一关系)
user_answer.user_id
→ user_info.user_id
(多对一关系)
user_answer.goal_id
→ goals.goal_id
(多对一关系)
user_answer.content_id
→ goal_of_detail.detail_id
(多对一关系)
为了提高查询性能,建议创建以下索引:
-- 用户表索引
CREATE INDEX idx_user_username ON user_info(username);
CREATE INDEX idx_user_create_time ON user_info(create_time);
-- 目标表索引
CREATE INDEX idx_goal_user_id ON goals(user_id);
CREATE INDEX idx_goal_status ON goals(status);
CREATE INDEX idx_goal_subject ON goals(subject);
CREATE INDEX idx_goal_create_time ON goals(create_time);
CREATE INDEX idx_goal_user_status ON goals(user_id, status);
-- 目标详情表索引
CREATE INDEX idx_detail_goal_id ON goal_of_detail(goal_id);
CREATE INDEX idx_detail_subject ON goal_of_detail(subject);
CREATE INDEX idx_detail_content_type ON goal_of_detail(content_type);
CREATE INDEX idx_detail_difficulty ON goal_of_detail(difficulty);
CREATE INDEX idx_detail_create_time ON goal_of_detail(create_time);
CREATE INDEX idx_detail_goal_type ON goal_of_detail(goal_id, content_type);}}}
系统启动时会自动初始化测试数据,包括:
系统会为测试用户创建一些示例学习目标,涵盖不同学科和难度等级。
data/testdb.mv.db
,定期备份此文件存储用户学习报告信息,包括学习统计数据、知识点分析、难度分析等,用于生成详细的学习报告。
字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 主键 | 说明 |
---|---|---|---|---|---|---|
report_id | BIGINT | - | NOT NULL | AUTO_INCREMENT | ✓ | 报告ID,主键,自增 |
goal_id | BIGINT | - | NOT NULL | - | - | 目标ID,外键关联goals表 |
user_id | BIGINT | - | NOT NULL | - | - | 用户ID,外键关联user_info表 |
generate_time | TIMESTAMP | - | NOT NULL | CURRENT_TIMESTAMP | - | 报告生成时间 |
accuracy | DECIMAL | 5,2 | NULL | - | - | 正确率(百分比) |
knowledge_analysis | TEXT | - | NULL | - | - | 知识点分析,JSON格式存储 |
difficulty_analysis | TEXT | - | NULL | - | - | 难度分析,JSON格式存储 |
share_url | VARCHAR | 255 | NULL | - | - | 分享链接 |
报告生成规则:
数据分析:
数据关联:
存储用户与AI助手的对话记录,支持学习指导、答疑解惑等功能。
字段名 | 数据类型 | 长度 | 是否为空 | 默认值 | 主键 | 说明 |
---|---|---|---|---|---|---|
chat_id | BIGINT | - | NOT NULL | AUTO_INCREMENT | ✓ | 对话ID,主键,自增 |
user_id | BIGINT | - | NOT NULL | - | - | 用户ID,外键关联user_info表 |
content | TEXT | - | NOT NULL | - | - | 消息内容 |
type | TINYINT | - | NOT NULL | - | - | 消息类型(0-用户,1-AI) |
timestamp | TIMESTAMP | - | NOT NULL | CURRENT_TIMESTAMP | - | 消息时间戳 |
0
: 用户发送的消息1
: AI回复的消息对话管理:
AI集成:
数据关联:
版本 | 日期 | 修改内容 | 修改人 |
---|---|---|---|
1.0 | 2025-01-29 | 初始版本,创建用户表和目标表 | 系统 |
1.1 | 2025-01-29 | 新增目标详情表(goal_of_detail),支持AI出题功能 | 系统 |
1.2 | 2025-01-29 | 新增用户答题记录表(user_answer),支持答题记录和统计分析 | 系统 |
1.3 | 2025-01-29 | 为goals表新增complete_time字段,记录目标完成时间 | 系统 |
1.4 | 2025-01-29 | 为goals表新增answer_duration字段,记录用户答题时长 | 系统 |
1.5 | 2025-01-30 | 新增学习报告表(study_report),支持学习报告生成和分享功能 | 系统 |
1.6 | 2025-01-30 | 新增AI对话记录表(ai_chat),支持AI助手对话功能 | 系统 |
1.7 | 2025-01-30 | 完善学习报告详情页面,支持知识点分布和难度分析 | 系统 |
最后更新时间: 2025-01-30