本文档记录了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 | - | 创建时间 |
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
: 单词题(英语单词练习)简单
: 基础题目中等
: 中等难度题目困难
: 高难度题目题目生成规则:
题目类型说明:
数据关联:
goals.user_id
→ user_info.user_id
(多对一关系)
goal_of_detail.goal_id
→ goals.goal_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
,定期备份此文件版本 | 日期 | 修改内容 | 修改人 |
---|---|---|---|
1.0 | 2025-01-29 | 初始版本,创建用户表和目标表 | 系统 |
1.1 | 2025-01-29 | 新增目标详情表(goal_of_detail),支持AI出题功能 | 系统 |
最后更新时间: 2025-01-29