# 数据库标准

[目的：指导模式设计、查询、迁移和完整性]

## 理念
- 首先建模领域；确保逻辑正确后再做性能优化
- 偏好显式约束；让数据库强制执行不变式
- 仅查询所需内容；优化前先做性能度量

## 命名和类型
- 表: `snake_case`，复数（`users`、`order_items`）
- 列: `snake_case`（`created_at`、`user_id`）
- 外键: `{table}_id` 引用 `{table}.id`
- 类型: 时区感知时间戳；强ID；精确货币类型

## 关系
- 1:N: 子表中的外键
- N:N: 带复合键的连接表
- 1:1: 外键 + UNIQUE

## 迁移
- 不可变迁移；始终添加回滚
- 小而专注的步骤；先在非生产环境测试
- 命名: `{seq}_{action}_{object}`（例如，`002_add_email_index`）

## 查询模式
- 简单CRUD和安全使用ORM；复杂/性能关键使用原始SQL
- 避免N+1（急切加载/批处理）；分页大型集合
- 为外键和频繁过滤/排序的列建立索引

## 连接和事务
- 使用连接池（大小/超时基于工作负载）
- 每个工作单元一个连接；及时关闭/返回
- 在多步骤更改中包装事务

## 数据完整性
- 使用NOT NULL/UNIQUE/CHECK/外键约束
- 在适当时在数据库验证（深度防御）
- 对于一致的派生，偏好生成列

## 备份和恢复
- 定期备份并保留；测试恢复
- 记录RPO/RTO目标；监控备份作业

---
_关注模式和决策。无环境特定设置。_
