Agent Skills
返回列表
💻

PostgreSQL 表设计指南

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/postgresql-zh。

技能介绍

解决什么

PostgreSQL 表结构看似只是建表,实际会把后续查询、迁移、权限和容量问题锁死。该技能针对常见坑:该用 TIMESTAMPTZ 却用 TIMESTAMP、该用 NUMERIC 却用浮点、外键忘记建索引、过早反规范化、UNIQUE 允许多个 NULL、大 JSONB 查询无索引、生产 DDL 缺少回滚等。

技能如何工作

  • 先捕获实体、访问模式和扩展目标:行数、QPS、保留期、真实查询路径。
  • 选择能强制不变量的类型与约束:PK、FK、UNIQUE、CHECK,并用 NOT NULL、DEFAULT 表达业务默认。
  • 为真实查询路径设计索引:B-tree、INCLUDE 覆盖索引、部分索引、表达式索引,以及 GIN/GiST 支持 JSONB、数组和全文检索。
  • 需要规模或访问控制时规划 RANGE、LIST、HASH 分区与 ROW LEVEL SECURITY。
  • 给出安全演进路径:事务性 DDL、CREATE INDEX CONCURRENTLY、避免易变默认值触发重写、先删约束再删列。

适用边界

适合 PostgreSQL 模式设计、审查与迁移评审;不适用于只做查询调优、非 PostgreSQL 数据库或通用建模指南。资料强调:没有备份和回滚计划时,不要对生产执行破坏性 DDL;用 EXPLAIN 验证索引;JSONB 只放半结构化属性,核心关系仍应落在表中。

使用场景

  • 评审订单、用户等核心表结构,补齐 `PRIMARY KEY`、`NOT NULL`、外键索引和默认值。
  • 为大日志或事件表设计 `TIMESTAMPTZ`、`RANGE` 分区和 `BRIN` 索引,避免全表扫描。
  • 给配置或扩展字段选 `JSONB` 并加 `GIN` 索引,设计 `@>`、键存在查询与生成列提取。
  • 执行迁移前检查 DDL 风险,用事务回滚和 `CREATE INDEX CONCURRENTLY` 控制生产影响。

适合人员

  • 负责订单、用户、日志等核心数据模型的 PostgreSQL 后端工程师。
  • 需要在上线前审查表结构、索引和迁移方案的数据库工程师或 SRE。
  • 设计事件、日志或时序表,并关注分区、TOAST 与写入性能的开发者。
  • 要在 `JSONB` 与关系列之间取舍,并补充 `GIN` 索引的产品技术负责人。