SuperAPI AI 工具集

postgres-schema-design

设计与创作

查看项目

更新于 10-15 20:34

技能介绍

用途:为 PostgreSQL 表结构设计提供系统性参考,覆盖数据类型选择、索引、约束、分区和性能模式,帮助避免常见误用。

主要能力:给出核心规则,普通引用表应定义主键,优先 BIGINT GENERATED ALWAYS AS IDENTITY,仅在需要全局唯一或不透明 ID 时用 UUID;先规范化到 3NF,仅在实测高收益读场景反规范化;语义必需处加 NOT NULL 与 DEFAULT;为实际访问路径建索引,主键/唯一自动建索引,外键列需手动建索引。类型建议:事件时间用 TIMESTAMPTZ,金额用 NUMERIC,字符串用 TEXT,整数用 BIGINT,浮点用 DOUBLE PRECISION 或 NUMERIC。

覆盖主题:B-tree、GIN、GiST、BRIN 及复合、覆盖、部分、表达式索引;PK/FK/UNIQUE/CHECK/EXCLUDE 约束;RANGE/LIST/HASH 声明式分区;RLS 行级安全;JSONB 与 pgvector/pgcrypto/pg_trgm/timescaledb/postgis 等扩展;生成列、TEMPORARY 与 UNLOGGED 表。

使用方式:作为设计时的检查清单,按索引、约束、分区等章节对照表结构;示例包含 users、orders、profiles 的建表与索引语句。

限制与注意事项:资料仅涉及数据库设计,不涉及安装或收费。明确列出应避免的类型,如 timestamp(无时区)、char(n)/varchar(n)、money、timetz、serial。分区表不支持全局 UNIQUE 约束,分区表外键不支持需用触发器;UNIQUE 默认允许多个 NULL,PG15+ 可用 NULLS NOT DISTINCT 限制;外键列不会自动建索引。CONCURRENTLY 建索引不能在事务中运行。是否支持 uuidv7()、VIRTUAL 生成列等与 PostgreSQL 版本相关,资料给出 PG18+、PG15+ 等条件。