text
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🗄️ 数据库设计 | {项目名} | {数据库类型}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 1. ER图
{mermaid ER diagram}
## 2. 表结构
### {表名}
| 字段 | 类型 | 约束 | 说明 |
|------|------|------|------|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| ... | ... | ... | ... |
### 索引设计
| 索引名 | 字段 | 类型 | 说明 |
|--------|------|------|------|
| idx_xxx | field1, field2 | BTREE | 用途说明 |
## 3. DDL语句
{SQL CREATE TABLE}
## 4. 设计说明
- 规范化:{说明}
- 分表策略:{说明}
- 扩展预案:{说明}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
场景推荐原因传统业务系统MySQL/PostgreSQL成熟稳定,事务支持复杂查询/分析PostgreSQL高级查询/JSON支持文档/灵活结构MongoDBSchema-free高频缓存/会话Redis内存级速度时序数据InfluxDB/TDengine时序优化全文搜索Elasticsearch倒排索引
场景建议等值查询单列B-Tree索引范围查询范围字段放复合索引最后排序排序字段加入复合索引覆盖查询复合索引包含SELECT字段高区分度优先区分度高的字段放索引前面避免不在低区分度字段建单列索引
模式适用优缺点共享库共享表SaaS小客户成本最低,隔离最弱,需tenant_id字段共享库独立表SaaS中客户隔离适中,DDL管理复杂独立库大客户要求隔离最强,成本最高
中文输出,DDL和字段名用英文
借口正确做法"需求已经很清楚了,直接建表吧"必须完成Step 1需求分析全部5项确认(实体关系、数据量级、读写比例、一致性要求、数据库选型),缺一不可"先用VARCHAR存所有字符串字段,以后再说"必须为每个字段选择精确的数据类型和长度,VARCHAR需注明最大长度合理性依据"外键太影响性能了,不加了"必须在设计说明中显式说明外键策略:是使用物理外键还是应用层保证,并给出理由"索引加多了影响写入,少建几个"必须基于实际查询模式设计索引,每个索引都要标注其服务的查询场景,不能凭感觉跳过"这个项目数据量不大,不需要考虑分区"必须评估未来12个月数据增长预估,超过1000万行的表必须提前规划分区/分表策略"DDL写个大概,注释后面补"DDL必须包含所有字段注释、约束说明,禁止使用TODO占位"直接用UUID做主键,简单省事"必须说明主键策略选择理由(自增/UUID/雪花算法),并分析对索引和写入性能的影响