SuperAPI AI 工具集

postgresql-table-design

设计与创作

查看项目

更新于 10-16 03:13

技能介绍

用途:为 PostgreSQL 设计专用数据库表结构,提供从数据类型选择到索引、约束、分区与性能模式的系统化规范。

主要能力:核心规则(为引用表定义主键,优先 BIGINT GENERATED ALWAYS AS IDENTITY,仅在需要全局唯一/不可读时用 UUID;先满足 3NF,仅在有实测收益时反规范化;语义需要处加 NOT NULL;为实际查询路径建索引);数据类型建议(时间用 TIMESTAMPTZ,金额用 NUMERIC,字符串用 TEXT,整数用 BIGINT,浮点用 DOUBLE PRECISION);PostgreSQL 特有注意事项(未加引号标识符会转小写,UNIQUE 允许多个 NULL,外键列不会自动建索引,序列存在空洞属正常,默认无聚簇主键,MVCC 产生死元组由 vacuum 处理);约束(PK、FK、UNIQUE、CHECK、EXCLUDE);索引(B-tree、复合、覆盖、部分、表达式、GIN、GiST、BRIN);分区(RANGE、LIST、HASH,推荐声明式分区而非表继承);JSONB 与 GIN 索引;扩展(pgcrypto、pg_trgm、citext、timescaledb、postgis、pgvector 等);更新密集、插入密集与 upsert 场景的优化建议;安全演进(事务性 DDL、CREATE INDEX CONCURRENTLY)。

使用方式:作为设计规范在编写建表语句时参照;示例中给出 users、orders、profiles 等建表示例,命令保持原样。

限制:分区表不支持全局 UNIQUE 约束,且分区表的外键不受支持;CREATE INDEX CONCURRENTLY 不能运行在事务中;NULLS NOT DISTINCT 需 PG15+,uuidv7() 需 PG18+;VACUUM、CLUSTER 等运维细节需结合实际环境验证。