Files
hs-end/doc/TASK002-数据库设计和初始化.md
lxy 5a671c4233 first
demo
2025-08-25 16:01:26 +08:00

41 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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_idUUID、user_id、title、message_count、last_message_time、created_at等字段
3. 消息表需包含message_idUUID、session_id、roleuser/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数据库配置