用途:面向关系型数据库的模式设计,包括新表设计、已有模式重构、范式与反范式选择、索引类型选择、迁移安全规划,以及 PgBouncer、Prisma 等连接池配置。不适用于查询计划分析(另有 postgresql-optimization)、MongoDB/DynamoDB 等文档模型、数据库基础设施与 ORM 代码生成。
主要能力:提供范式化与反范式化决策树,原则是先从 3NF 开始,只有在实测证明某个连接成为瓶颈后才做受控反范式化。提供索引选择决策树:等值/范围用 B-tree,全文检索、数组、JSONB 用 GIN,几何类型用 GiST,哈希索引较少使用;频繁查询子集可用部分索引,仅覆盖查询列可用覆盖索引。要求为每个外键列建索引,复合索引把选择性最高的列放前面。迁移安全采用 expand-contract 模式:先加新列并双写,回填数据,切换读取,最后删除旧列;大表使用 CREATE INDEX CONCURRENTLY。
使用方式:按需查阅索引与迁移参考文档;软删除用 deleted_at 加部分索引,并注意唯一约束需改为部分唯一索引;多态关联避免多个可空外键,采用独立关联表或类型列加 CHECK 约束;连接池示例为 PgBouncer 事务模式(pool_mode = transaction,default_pool_size = 20 等),Prisma 连接串加 pgbouncer=true。
适用场景:设计新 schema、判断是否反范式化、选择索引、规划不中断生产的迁移、实现软删除与多态关联。
限制:部分示例命令与配置来自资料原文,具体版本兼容性与性能需结合实际环境验证;资料未提供数据库具体版本支持范围、基准数据与定价信息。