Habilidades postgresql-table-design
📦

postgresql-table-design

Seguro

Crie esquemas PostgreSQL com orientação especializada

O design de esquemas PostgreSQL requer conhecimento de tipos de dados, estratégias de indexação, restrições e padrões de desempenho. Esta skill oferece orientação abrangente sobre melhores práticas específicas do PostgreSQL, recursos avançados e armadilhas comuns para ajudá-lo a construir esquemas de banco de dados eficientes e sustentáveis.

Suporta: Claude Codex Code(CC)
📊 70 Adequado
1

Baixar o ZIP da skill

2

Upload no Claude

Vá em Configurações → Capacidades → Skills → Upload skill

3

Ative e comece a usar

Testar

A utilizar "postgresql-table-design". Como devo armazenar valores monetários no PostgreSQL?

Resultado esperado:

Use NUMERIC(p,s) para valores monetários, nunca tipos float. Por exemplo: amount NUMERIC(10,2) para moeda com duas casas decimais. Isso fornece aritmética decimal exata sem problemas de precisão de ponto flutuante. Evite o tipo money desatualizado.

A utilizar "postgresql-table-design". Qual é a diferença entre BIGINT GENERATED ALWAYS AS IDENTITY e UUID para chaves primárias?

Resultado esperado:

  • BIGINT GENERATED ALWAYS AS IDENTITY: IDs inteiros sequenciais. Preferido para a maioria dos casos de uso. Benefícios: armazenamento menor, indexação mais rápida, melhor localidade. Use quando a exclusividade global entre sistemas não é necessária.
  • UUID: Identificadores globalmente únicos. Use quando: mesclando dados de múltiplos bancos de dados, federando sistemas, ou quando precisar de IDs opacos não sequenciais. Gere com uuidv7() no PostgreSQL 18+ ou gen_random_uuid() em versões mais antigas.

A utilizar "postgresql-table-design". Devo adicionar índices em colunas de chave estrangeira?

Resultado esperado:

Sim, sempre adicione índices explícitos em colunas de chave estrangeira. O PostgreSQL não cria índices automáticos em colunas FK, ao contrário de alguns bancos de dados. Isso acelera joins e evita problemas de bloqueio durante exclusões ou atualizações na tabela pai. Exemplo: CREATE INDEX ON orders (user_id) para chave estrangeira user_id.

Auditoria de Segurança

Seguro
v5 • 1/21/2026

This skill is a documentation-only resource providing PostgreSQL schema design guidance. All 237 static findings are false positives triggered by SQL examples and technical terminology in markdown code blocks. The skill contains no executable code, network calls, or file system access. Safe for publication.

2
Arquivos analisados
2,539
Linhas analisadas
0
achados
5
Total de auditorias
Nenhum problema de segurança encontrado
Auditado por: claude Ver Histórico de Auditoria →

Pontuação de qualidade

38
Arquitetura
100
Manutenibilidade
87
Conteúdo
30
Comunidade
100
Segurança
83
Conformidade com especificações

O Que Você Pode Construir

Criar um novo esquema de banco de dados

Obtenha orientação sobre estrutura de tabelas, tipos de dados, restrições e estratégias de indexação ao criar um novo banco de dados PostgreSQL para uma aplicação.

Otimizar o desempenho de esquemas existentes

Aprenda sobre estratégias de indexação, opções de particionamento e padrões de desempenho para melhorar o desempenho de consultas e reduzir a expansão do banco de dados.

Revisar decisões de design de esquema

Valide escolhas de tipos de dados, uso de restrições e decisões de normalização de acordo com as melhores práticas do PostgreSQL antes da implementação.

Tente Estes Prompts

Design básico de tabelas
Preciso criar uma tabela de usuários com email, nome e timestamps. Qual é o esquema PostgreSQL recomendado?
Escolher tipos de dados apropriados
Estou armazenando preços de produtos, endereços IP e preferências de usuário. Quais tipos de dados PostgreSQL devo usar?
Criar estratégia de indexação
Minha tabela de pedidos tem consultas filtrando por user_id, status e created_at. Quais índices devo criar?
Lidar com dados de séries temporais de alto volume
Preciso armazenar milhões de leituras de sensores por dia com consultas filtrando por dispositivo e intervalo de tempo. Como devo projetar o esquema e o particionamento?

Melhores Práticas

  • Comece com esquemas normalizados até a terceira forma normal e só desnormalize quando tiver medido problemas de desempenho com consultas específicas de alto valor
  • Use TIMESTAMPTZ para todas as colunas de timestamp, TEXT para strings, NUMERIC para dinheiro e BIGINT GENERATED ALWAYS AS IDENTITY para chaves primárias, a menos que precise de UUIDs
  • Crie índices para colunas usadas em cláusulas WHERE, condições JOIN e cláusulas ORDER BY, e sempre adicione índices explícitos em colunas de chave estrangeira

Evitar

  • Não use tipos de dados VARCHAR(n) ou CHAR(n); use TEXT com restrições CHECK para limites de comprimento, se necessário
  • Não use TIMESTAMP sem fuso horário, o tipo money ou SERIAL; use TIMESTAMPTZ, NUMERIC e GENERATED ALWAYS AS IDENTITY
  • Não desnormalize dados prematuramente antes de medir problemas de desempenho reais; a desnormalização prematura cria carga de manutenção sem benefícios comprovados

Perguntas Frequentes

Quando devo usar UUID em vez de BIGINT para chaves primárias?
Use UUID quando precisar de exclusividade global entre sistemas distribuídos, ao mesclar bancos de dados, ou quando quiser identificadores opacos não sequenciais. Use BIGINT GENERATED ALWAYS AS IDENTITY para a maioria dos outros casos, pois oferece melhor desempenho e armazenamento menor.
O PostgreSQL cria índices automaticamente em colunas de chave estrangeira?
Não, o PostgreSQL não cria índices automaticamente em colunas de chave estrangeira. Você deve criar índices manualmente em colunas FK para melhorar o desempenho de joins e evitar problemas de bloqueios durante modificações na tabela pai.
Qual é a diferença entre os tipos de dados JSONB e JSON?
JSONB é preferível em relação a JSON. JSONB armazena dados em formato binário para processamento mais rápido e suporta indexação com índices GIN. Use JSON apenas se precisar preservar a ordenação e formatação original do conteúdo JSON.
Quando devo particionar uma tabela?
Particione tabelas maiores que 100 milhões de linhas quando consultas filtram consistentemente por uma chave de partição como timestamp ou região. O particionamento também é útil quando você precisa podar ou substituir dados em massa periodicamente. Use particionamento declarativo ou TimescaleDB para gerenciamento automatizado.
Por que vejo gaps na minha sequência de coluna IDENTITY?
Gaps em sequências são comportamento normal e esperado no PostgreSQL. Rollbacks, travamentos e transações concorrentes criam gaps. Não tente tornar os IDs consecutivos, pois este é o comportamento padrão do banco de dados e não indica um problema.
Como fazer comparações de texto insensíveis a maiúsculas e minúsculas?
Para insensibilidade a maiúsculas e minúsculas simples em ASCII, crie um índice de expressão em LOWER(column) e consulte com WHERE LOWER(email) = LOWER(input). Para comparações com suporte a locale, use collations não determinísticas. Use o tipo CITEXT apenas se precisar de restrições insensíveis a maiúsculas e minúsculas como UNIQUE ou PRIMARY KEY.

Detalhes do Desenvolvedor

Estrutura de arquivos

📄 SKILL.md