Pular para o conteúdo
Skillpedia
Bancos de dados48 mil · #3860

postgresql

Ajuda seu agente a projetar esquemas para PostgreSQL. Ele cobre boas práticas, tipos de dados e otimização para melhor desempenho.

O que ela faz

Este agente ajuda a criar a estrutura (esquema) de um banco de dados PostgreSQL. Ele sugere os melhores tipos de dados, regras (constraints), índices e outras otimizações para garantir que seu banco de dados funcione bem e seja fácil de manter.

Quando usar

  • ✓Ao começar um novo projeto e precisar definir como os dados serão organizados.
  • ✓Quando precisar otimizar um banco de dados existente para melhor desempenho.
  • ✓Ao escolher os tipos de informação corretos para cada coluna (ex: texto, número, data).

Exemplo do que pedir para a IA

“Preciso criar a estrutura de um banco de dados para uma loja online. Quero organizar informações de clientes, produtos e pedidos.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/postgresql/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/postgresql/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

O agente analisa suas necessidades, como o tipo de informação que você vai guardar e como você pretende acessá-la. Com base nisso, ele propõe uma estrutura otimizada, escolhendo os tipos de dados mais adequados e sugerindo índices para agilizar as buscas.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill postgresql

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/postgresql/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Design de Tabelas PostgreSQL

Use esta habilidade quando

  • Projetando um schema para PostgreSQL
  • Selecionando tipos de dados e restrições
  • Planejando índices, partições ou políticas RLS
  • Revisando tabelas para escalabilidade e manutenibilidade

Não use esta habilidade quando

  • Você está visando um banco de dados não-PostgreSQL
  • Você só precisa de otimização de consultas sem alterações de schema
  • Você precisa de um guia de modelagem agnóstico de banco de dados

Instruções

  1. Capture entidades, padrões de acesso e alvos de escala (linhas, QPS, retenção).
  2. Escolha tipos de dados e restrições que imponham invariantes.
  3. Adicione índices para caminhos de consulta reais e valide com EXPLAIN.
  4. Planeje particionamento ou RLS onde exigido por escala ou controle de acesso.
  5. Revise o impacto da migração e aplique alterações com segurança.

Segurança

  • Evite DDL destrutivo em produção sem backups e um plano de reversão.
  • Use migrações e validação em staging antes de aplicar alterações de schema.

Regras Principais

  • Defina uma CHAVE PRIMÁRIA para tabelas de referência (usuários, pedidos, etc.). Nem sempre é necessária para dados de série temporal/evento/log. Quando usada, prefira BIGINT GENERATED ALWAYS AS IDENTITY; use UUID apenas quando a unicidade global/opacidade for necessária.
  • Normalize primeiro (para 3NF) para eliminar redundância de dados e anomalias de atualização; desnormalize apenas para leituras medidas, de alto ROI, onde o desempenho de junções se provou problemático. A desnormalização prematura cria um fardo de manutenção.
  • Adicione NOT NULL onde for semanticamente exigido; use DEFAULTs para valores comuns.
  • Crie índices para caminhos de acesso que você realmente consulta: PK/único (automático), colunas FK (manual!), filtros/ordenações frequentes e chaves de junção.
  • Prefira TIMESTAMPTZ para tempo de evento; NUMERIC para dinheiro; TEXT para strings; BIGINT para valores inteiros, DOUBLE PRECISION para floats (ou NUMERIC para aritmética decimal exata).

“Armadilhas” do PostgreSQL

  • Identificadores: sem aspas → minúsculas. Evite nomes entre aspas/com maiúsculas e minúsculas. Convenção: use snake_case para nomes de tabelas/colunas.
  • Unique + NULLs: UNIQUE permite múltiplos NULLs. Use UNIQUE (...) NULLS NOT DISTINCT (PG15+) para restringir a um NULL.
  • Índices FK: O PostgreSQL não indexa automaticamente colunas FK. Adicione-os.
  • Sem coerções silenciosas: estouros de comprimento/precisão geram erros (sem truncamento). Exemplo: inserir 999 em NUMERIC(2,0) falha com erro, ao contrário de alguns bancos de dados que truncam ou arredondam silenciosamente.
  • Sequências/identidade têm lacunas (normal; não "corrija"). Rollbacks, falhas e transações concorrentes criam lacunas nas sequências de ID (1, 2, 5, 6...). Este é um comportamento esperado — não tente tornar os IDs consecutivos.
  • Armazenamento Heap: sem PK clusterizada por padrão (ao contrário de SQL Server/MySQL InnoDB); CLUSTER é uma reorganização única, não mantida em inserções subsequentes. A ordem das linhas no disco é a ordem de inserção, a menos que explicitamente clusterizada.
  • MVCC: atualizações/exclusões deixam tuplas mortas; o vacuum as gerencia — projete para evitar churn de linhas largas e quentes.

Tipos de Dados

  • IDs: BIGINT GENERATED ALWAYS AS IDENTITY preferível (GENERATED BY DEFAULT também é bom); UUID ao mesclar/federar/usar em um sistema distribuído ou para IDs opacos. Gere com uuidv7() (preferível se usar PG18+) ou gen_random_uuid() (se usar uma versão mais antiga do PG).
  • Inteiros: prefira BIGINT a menos que o espaço de armazenamento seja crítico; INTEGER para intervalos menores; evite SMALLINT a menos que seja restrito.
  • Floats: prefira DOUBLE PRECISION a REAL a menos que o espaço de armazenamento seja crítico. Use NUMERIC para aritmética decimal exata.
  • Strings: prefira TEXT; se limites de comprimento forem necessários, use CHECK (LENGTH(col) <= n) em vez de VARCHAR(n); evite CHAR(n). Use BYTEA para dados binários. Strings/binários grandes (> 2KB de limite padrão) são armazenados automaticamente em TOAST com compressão. Armazenamento TOAST: PLAIN (sem TOAST), EXTENDED (comprimir + fora de linha), EXTERNAL (fora de linha, sem compressão), MAIN (comprimir, manter em linha se possível). O padrão EXTENDED geralmente é ótimo. Controle com ALTER TABLE tbl ALTER COLUMN col SET STORAGE strategy e ALTER TABLE tbl SET (toast_tuple_target = 4096) para o limite. Insensível a maiúsculas/minúsculas: para tratamento de localidade/acentos, use collations não determinísticas; para ASCII puro, use índices de expressão em LOWER(col) (preferível, a menos que a coluna precise de PK/FK/UNIQUE insensível a maiúsculas/minúsculas) ou CITEXT.
  • Dinheiro: NUMERIC(p,s) (nunca float).

…

Perguntas frequentes

O que são 'tipos de dados'?

São como categorias que definem o que pode ser guardado em uma coluna. Exemplos: 'texto' para nomes, 'número inteiro' para idades, 'data' para aniversários.

O que são 'índices'?

São como o índice remissivo de um livro. Eles ajudam o banco de dados a encontrar informações específicas muito mais rápido, sem precisar ler tudo.

O que é 'esquema'?

É a planta ou a estrutura geral do seu banco de dados, definindo quais tabelas existem, quais colunas cada tabela tem e como elas se relacionam.

Detalhes

Descrição original do autor

Design a PostgreSQL-specific schema. Covers best-practices, data types, indexing, constraints, performance patterns, and advanced features

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3860
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas