用途:该技能面向通用 PostgreSQL 表设计,当用户需要设计 PostgreSQL 表、模式或数据模型时触发,提供从主键、规范化到索引、分区、约束与数据类型选择的一整套设计规则。
主要能力:
- 主键与标识:引用表建议定义主键,优先 BIGINT GENERATED ALWAYS AS IDENTITY,仅在需要全局唯一或不透明 ID 时用 UUID;时序/事件/日志数据不强制主键。
- 规范化:先按 3NF 规范化,仅在实测证明连接性能有问题时才反规范化。
- 数据类型:事件时间用 TIMESTAMPTZ,金额用 NUMERIC,字符串用 TEXT,整数优先 BIGINT,浮点用 DOUBLE PRECISION;避免 timestamp、char(n)/varchar(n)、money、timetz、serial 及内置几何类型。
- 索引:为实际查询路径建索引,外键列需手动建索引;涵盖 B-tree、复合、覆盖、部分、表达式、GIN、GiST、BRIN。
- 约束:PK、FK(指定 ON DELETE/UPDATE 并加索引)、UNIQUE(PG15+ 可用 NULLS NOT DISTINCT)、CHECK、EXCLUDE。
- 分区:超 1 亿行且按分区键过滤时使用,支持 RANGE、LIST、HASH,优先声明式分区或 hypertable,不用表继承。
- 其他:行级安全、生成列、JSONB 与 GIN 索引、扩展(pgcrypto、pg_trgm、citext、timescaledb、postgis、pgvector 等)、更新密集/插入密集/upsert 场景及安全模式演进。
使用方式:作为设计参考,按上述规则选择类型、约束与索引;示例命令如 CREATE TABLE users (...)、CREATE INDEX ON orders (user_id)、CREATE INDEX ON tbl USING GIN (jsonb_col) 等保持原样。
适用场景:新建 PostgreSQL 表、模式或数据模型设计,以及时序、JSONB、分区、高写入等特定负载的表设计。
限制:资料未提供该技能的安装方式、收费、平台或效果信息;部分建议依赖 PostgreSQL 版本(如 NULLS NOT DISTINCT 需 PG15+,uuidv7() 需 PG18+)。