2.4 KiB
2.4 KiB
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操作成功
注意事项
- 用户表需包含:id、email、password_hash、nickname、avatar_url、created_at、updated_at等字段
- 会话表需包含:session_id(UUID)、user_id、title、message_count、last_message_time、created_at等字段
- 消息表需包含:message_id(UUID)、session_id、role(user/assistant)、content、timestamp、model_used、is_favorited等字段
- 收藏表需包含:favorite_id、user_id、message_id、session_id、created_at等字段
- 文件表需包含:file_id、user_id、session_id、filename、file_path、file_size、file_type、upload_time等字段
- 所有主键使用UUID或雪花ID,避免数据泄露
- 敏感字段需要考虑加密存储(如密码使用BCrypt)
- 添加软删除字段(deleted_at)用于数据恢复
- 时间字段统一使用BIGINT存储时间戳
- 考虑分表分库的预留设计(如用户ID取模)
- 为高频查询字段添加索引(如session_id、user_id、timestamp等)
- 设置合理的字符集(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(数据库配置)