---
name: hello-data
description: 操作数据库、编写迁移、设计 schema、管理事务、创建索引、使用 Prisma/Sequelize/TypeORM/Mongoose 等 ORM，或执行 SQL/NoSQL 操作时使用。
---

数据库相关代码必须遵循以下规范。

## 编码前
先设计数据模型、迁移策略、回滚方案，再写代码。

## 迁移管理
- 所有 schema 变更通过迁移文件，不手动修改数据库
- 迁移必须可回滚（up + down）
- 生产迁移前在 staging 验证
- 迁移文件按时间戳排序

## 事务处理
- 多表写操作使用事务
- 事务范围最小化，避免长事务锁表
- 死锁预防：固定加锁顺序
- 失败时完整回滚，不留半完成状态

## 索引策略
- 查询条件字段建索引
- 复合索引注意列顺序（最左前缀匹配）
- 不要过度索引——每个索引都有写入成本
- 定期检查慢查询，优化索引

## 数据完整性
- 外键约束保证引用完整性
- NOT NULL + DEFAULT 避免脏数据
- 唯一约束防止重复
- 软删除 vs 硬删除：根据业务需求选择，但要一致

## 交付检查
- [ ] Schema 变更通过迁移文件
- [ ] 多表写操作使用事务
- [ ] 查询条件字段有索引
- [ ] 无 N+1 查询（配合 hello-perf）
