用 AI 设计 PostgreSQL 数据库表结构与索引

解决数据库架构设计难题:AI 帮助你设计符合 PostgreSQL 最佳实践的 Schema,合理选择数据类型、索引类型及分区策略,确保数据一致性、高性能及可维护性。

为什么需要这个技能

设计数据库不仅是写几条 CREATE TABLE 语句,更是为应用打好地基。错误的表结构(如滥用 VARCHAR(n)、未规范时间字段、缺失外键索引)会导致查询缓慢、数据膨胀甚至业务逻辑错误。

PostgreSQL 拥有强大的功能但也存在“坑”,例如未自动创建外键索引、TIMESTAMPTIMESTAMPTZ 的时区陷阱、序列号空隙处理等。本技能指导 AI 规避这些陷阱,输出安全、可量化的表结构定义。

适用场景

  • 新项目初始化,需要构建符合生产标准的数据库 Schema。
  • 旧系统重构,需要迁移至 PostgreSQL 并优化性能。
  • 时间序列日志或高并发写入场景,需要设计合理的分区策略(List/Range/Hash)。
  • 需要引入 Row Level Security (RLS) 实现细粒度权限控制。
  • 处理复杂地理信息或向量数据,需配置 PostGIS 或 pgvector 扩展。

核心工作流

  1. 定义业务实体与基数:明确主键(通常用 BIGINT GENERATED ALWAYS AS IDENTITY),确定字段是否需要 NOT NULL
  2. 数据类型选型:严格遵循规范(如金额用 NUMERIC,时间用 TIMESTAMPTZ,文本用 TEXT),避免隐式类型转换。
  3. 建立索引体系:为外键列、高频过滤条件、排序字段创建 B-Tree 索引;针对 JSONB 或数组使用 GIN 索引。
  4. 制定安全与分区计划:启用 RLS 策略处理多租户数据,针对海量数据设计分区键。
  5. 生成并验证 DDL:生成 DDL 脚本,利用 EXPLAIN 验证执行计划,确保无逻辑漏洞。

关键技术点

  • 数据类型规范:使用 TIMESTAMPTZ 而非 TIMESTAMP;金额必须用 NUMERIC;主键首选 IDENTITY 而非 UUIDSERIAL
  • 索引策略:区分“显式索引”(B-Tree)与“覆盖索引”(INCLUDE 子句);对数组使用 GIN 索引加速包含查询。
  • 外键与约束:显式创建外键索引以加速关联;使用 EXCLUDE 约束防止时间冲突。
  • 升级安全:涉及 DDL 变更时,务必准备备份与回滚方案;使用 CONCURRENTLY 创建索引以减少锁表。

下载和安装

下载 postgresql 中文版 Skill ZIP

你可能还需要

暂无推荐