SuperAPI AI 工具集

database-design

数据与分析

查看项目

更新于 10-15 18:31

技能介绍

用途

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 之外的其他数据库、具体安装与调用方式,以及收费或授权信息,这些内容暂未提供。