用途:为 PostgreSQL 设计专用数据库模式(schema),覆盖最佳实践、数据类型、索引、约束、性能模式与高级特性。
主要能力:规范先满足 3NF,仅在实测证明连接性能有问题时才反范式化;为引用表定义主键,优先用 BIGINT GENERATED ALWAYS AS IDENTITY,仅在需要全局唯一或不透明 ID 时用 UUID;语义需要处加 NOT NULL 与 DEFAULT;为实际查询路径建索引(主键/唯一自动,外键列需手动)。
数据类型建议:事件时间用 TIMESTAMPTZ,金额用 NUMERIC,字符串用 TEXT,整数用 BIGINT,浮点用 DOUBLE PRECISION;避免 timestamp、char(n)/varchar(n)、money、timetz、serial,长度限制用 CHECK (LENGTH(col) <= n)。
索引与约束:B-tree 用于等值与范围;组合索引注意最左前缀;可用覆盖索引 INCLUDE、部分索引、表达式索引;GIN 用于 JSONB/数组/全文检索,GiST 用于范围、几何与排除约束,BRIN 用于自然有序的大表。外键需显式建索引,UNIQUE 默认允许多个 NULL,PG15+ 可用 NULLS NOT DISTINCT。
高级特性:超过约一亿行且按分区键过滤时用声明式分区(RANGE/LIST/HASH);JSONB 优先于 JSON 并用 GIN 索引;向量检索用 pgvector;时序场景可用 timescaledb;行级安全用 ENABLE ROW LEVEL SECURITY 与 CREATE POLICY。
必要用法示例:CREATE INDEX CONCURRENTLY 避免阻塞写入但不能在事务中运行;事务性 DDL 可回滚测试。
限制:声明式分区不支持全局 UNIQUE,主键/唯一需包含分区键,且不支持从分区表外键,需用触发器;本文档未提供具体的收费、价格与平台支持信息。