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

2.4 KiB
Raw Permalink Blame History

TASK002 - 数据库设计和初始化

任务信息

  • 任务编号: TASK002
  • 任务名称: 数据库设计和初始化
  • 版本: V1.0
  • 状态: 完成

任务描述

根据API文档设计数据库表结构创建用户、会话、消息、收藏、文件等核心业务表建立表之间的关联关系编写数据库初始化脚本和JPA Entity实体类。

验收标准清单

  • 完成数据库表结构设计,包括:用户表、会话表、消息表、收藏表、文件表
  • 建立表之间的外键关系和索引
  • 编写SQL初始化脚本schema.sql和data.sql - 使用Flyway迁移脚本V1__Create_initial_tables.sql
  • 创建对应的JPA Entity实体类 - User、Session、Message、Favorite、File
  • 配置JPA/Hibernate相关属性 - application.yml中已配置
  • 添加数据库版本管理工具Flyway或Liquibase - 已添加Flyway依赖和配置
  • 创建Repository接口 - UserRepository、SessionRepository、MessageRepository、FavoriteRepository、FileRepository
  • 验证数据库连接和表创建成功 - 测试通过,数据库连接正常
  • 编写基础的数据库操作测试 - 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数据库配置