用途
Database Design 是一个用于数据库架构设计、优化与迁移的 AI 智能体技能,面向 PostgreSQL、MySQL 和 NoSQL 数据库。它适合在设计表结构、编写迁移脚本或进行查询优化时使用。
主要能力
架构设计原则
技能给出规范化准则:1NF 要求原子值、无重复组;2NF 要求无对复合键的部分依赖;3NF 要求无传递依赖。示例中 users 表与 addresses 表被拆分为独立实体,通过外键关联。
同时提供为性能而做的反规范化示例,例如 order_summaries 表将 customer_name 从 customers 表反规范化过来,适用于读性能比写一致性更重要的场景。
索引设计
技能列出常见索引模式:
- B-tree(默认)用于等值和范围查询
- 复合索引(列顺序很重要)
- 部分索引用于特定条件
- GIN 索引用于数组/JSONB 列
- 覆盖索引(INCLUDE 附加列)
并提供索引分析查询,用于检查索引使用情况(pg_stat_user_indexes)和查找缺失索引(pg_stat_user_tables)。
迁移模式
技能提供安全迁移模板:使用事务、添加带默认值的列(PG 11+ 非阻塞)、并发创建索引(不锁表)、分批回填数据。
零停机迁移步骤为:1. 添加新列(可空);2. 部署同时写入两列的代码;3. 回填旧数据;4. 部署从新列读取的代码;5. 删除旧列。
查询优化
技能建议始终使用 EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT),关注 Seq Scan 与 Index Scan、实际行数与估算行数、缓冲区命中与读取等指标。常见优化包括:对大集合用 EXISTS 代替 IN、用键集(游标)分页代替 OFFSET、用 CTE 处理复杂查询。
约束与数据完整性
技能涵盖主键、带级联的外键、CHECK 约束、UNIQUE 约束以及排除约束(防止范围重叠)。
最佳实践
- 对外 ID 用 UUID,内部用 SERIAL/BIGSERIAL
- 始终添加 created_at 和 updated_at 时间戳
- 重要数据使用软删除(deleted_at)
- 分布式系统按最终一致性设计
- 在迁移文件中记录架构决策
- 部署前在生产规模数据上测试迁移
使用方式
该技能以技能文档形式提供,包含可直接参考的 SQL 代码示例。用户可在设计架构、编写迁移或优化查询时调用。具体安装命令与集成方式暂未提供。
适用场景
- 设计 PostgreSQL、MySQL 或 NoSQL 数据库表结构
- 编写数据库迁移脚本
- 优化慢查询与索引
- 实施零停机迁移
限制
资料未说明支持的数据库版本范围、是否支持除 PostgreSQL/MySQL/NoSQL 之外的其他数据库、具体安装与调用方式,以及收费或授权信息,这些内容暂未提供。