41 lines
2.4 KiB
Markdown
41 lines
2.4 KiB
Markdown
# TASK002 - 数据库设计和初始化
|
||
|
||
## 任务信息
|
||
- **任务编号**: TASK002
|
||
- **任务名称**: 数据库设计和初始化
|
||
- **版本**: V1.0
|
||
- **状态**: 完成
|
||
|
||
## 任务描述
|
||
根据API文档设计数据库表结构,创建用户、会话、消息、收藏、文件等核心业务表,建立表之间的关联关系,编写数据库初始化脚本和JPA Entity实体类。
|
||
|
||
## 验收标准清单
|
||
- [x] 完成数据库表结构设计,包括:用户表、会话表、消息表、收藏表、文件表
|
||
- [x] 建立表之间的外键关系和索引
|
||
- [x] 编写SQL初始化脚本(schema.sql和data.sql) - 使用Flyway迁移脚本V1__Create_initial_tables.sql
|
||
- [x] 创建对应的JPA Entity实体类 - User、Session、Message、Favorite、File
|
||
- [x] 配置JPA/Hibernate相关属性 - application.yml中已配置
|
||
- [x] 添加数据库版本管理工具(Flyway或Liquibase) - 已添加Flyway依赖和配置
|
||
- [x] 创建Repository接口 - UserRepository、SessionRepository、MessageRepository、FavoriteRepository、FileRepository
|
||
- [x] 验证数据库连接和表创建成功 - 测试通过,数据库连接正常
|
||
- [x] 编写基础的数据库操作测试 - DatabaseConnectionTest测试基本CRUD操作成功
|
||
|
||
## 注意事项
|
||
1. 用户表需包含:id、email、password_hash、nickname、avatar_url、created_at、updated_at等字段
|
||
2. 会话表需包含:session_id(UUID)、user_id、title、message_count、last_message_time、created_at等字段
|
||
3. 消息表需包含:message_id(UUID)、session_id、role(user/assistant)、content、timestamp、model_used、is_favorited等字段
|
||
4. 收藏表需包含:favorite_id、user_id、message_id、session_id、created_at等字段
|
||
5. 文件表需包含:file_id、user_id、session_id、filename、file_path、file_size、file_type、upload_time等字段
|
||
6. 所有主键使用UUID或雪花ID,避免数据泄露
|
||
7. 敏感字段需要考虑加密存储(如密码使用BCrypt)
|
||
8. 添加软删除字段(deleted_at)用于数据恢复
|
||
9. 时间字段统一使用BIGINT存储时间戳
|
||
10. 考虑分表分库的预留设计(如用户ID取模)
|
||
11. 为高频查询字段添加索引(如session_id、user_id、timestamp等)
|
||
12. 设置合理的字符集(utf8mb4)支持emoji
|
||
|
||
## 相关文件
|
||
- src/main/resources/db/migration/
|
||
- src/main/java/com/lxy/hsend/entity/
|
||
- src/main/java/com/lxy/hsend/repository/
|
||
- src/main/resources/application.yml(数据库配置) |