技能 postgresql
📦

postgresql

安全

Projetar Esquemas de Banco de Dados PostgreSQL

也可从以下获取: 2025Emma,2025Emma

Erros no design de esquemas de banco de dados causam problemas de integridade e desempenho de dados. Esta habilidade fornece práticas recomendadas específicas para PostgreSQL em tipos de dados, índices, restrições e padrões de escalabilidade.

支持: Claude Codex Code(CC)
📊 70 充足
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“postgresql”。 Design a users table with email, name, and timestamps

预期结果:

  • CREATE TABLE users (
  • user_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  • email TEXT NOT NULL UNIQUE,
  • name TEXT NOT NULL,
  • created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  • updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
  • );
  • CREATE UNIQUE INDEX ON users (LOWER(email));

正在使用“postgresql”。 Should I use UUID or BIGINT for primary keys?

预期结果:

  • Use BIGINT GENERATED ALWAYS AS IDENTITY when:
  • - Sequential IDs are acceptable
  • - Index performance is critical
  • - Smaller index size matters
  •  
  • Use UUID when:
  • - Global uniqueness is required
  • - ID opacity is a security requirement
  • - Merging data from multiple sources

安全审计

安全
v1 • 2/24/2026

All 221 static analyzer findings were determined to be false positives. The skill consists entirely of markdown documentation (SKILL.md) with no executable code. Backtick characters are markdown formatting for code examples, not shell execution. References to security features like Row Level Security are PostgreSQL documentation, not Windows SAM access. The skill provides educational guidance for database schema design with no security risks.

1
已扫描文件
233
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
22
社区
100
安全
91
规范符合性

你能构建什么

Design de Esquema para Nova Aplicação

Projetar um esquema de banco de dados completo para uma nova aplicação web com tipos de dados apropriados, chaves primárias, relacionamentos de chave estrangeira e índices para padrões de consulta comuns.

Revisão e Otimização de Esquema

Revisar designs de tabelas existentes para problemas de desempenho, índices faltantes, tipos de dados inadequados ou lacunas de restrições que podem causar problemas de integridade de dados.

Planejamento de Migração

Planejar evolução segura do esquema com DDL transacional, criação de índices concorrentes e estratégias para adicionar colunas a tabelas grandes sem tempo de inatividade.

试试这些提示

Design Básico de Tabela
Projetar uma tabela PostgreSQL para armazenar perfis de usuário com campos para e-mail, nome, data de registro e configurações opcionais de perfil. Usar tipos de dados e restrições apropriados.
Estratégia de Indexação
Tenho uma tabela de consultas com colunas: id, user_id, status, created_at. Consultas comuns filtram por user_id e status, e ordenam por created_at decrescente. Recomendar uma estratégia de indexação.
Decisão de Design JSONB
Devo armazenar atributos de produto em uma coluna JSONB ou criar colunas separadas? Os atributos variam por categoria de produto e os usuários frequentemente pesquisam por atributos específicos.
Particionamento de Tabelas Grandes
Tenho uma tabela de eventos crescendo em 10 milhões de linhas por mês. Consultas tipicamente filtram por event_date e device_id. Recomendar uma estratégia de particionamento e explicar os trade-offs.

最佳实践

  • Use TIMESTAMPTZ em vez de TIMESTAMP para todos os timestamps de eventos para evitar confusão de fuso horário
  • Adicione índices explícitos em colunas de chave estrangeira, pois o PostgreSQL não os cria automaticamente
  • Normalize para 3NF primeiro, depois desnormalize apenas para ganhos de desempenho de leitura comprovados e de alto ROI

避免

  • Usar VARCHAR com limites de tamanho em vez de TEXT com restrições CHECK
  • Criar índices em cada coluna sem analisar os padrões de consulta reais
  • Usar SERIAL em vez de GENERATED ALWAYS AS IDENTITY para colunas de auto-incremento

常见问题

Devo usar TEXT ou VARCHAR para colunas de string?
Use TEXT para a maioria dos casos. O PostgreSQL armazena TEXT e VARCHAR de forma idêntica. Se você precisar de validação de tamanho, adicione uma restrição CHECK em vez de usar VARCHAR(n).
Preciso indexar colunas de chave estrangeira?
Sim. O PostgreSQL não indexa automaticamente colunas FK. Adicione índices explícitos em colunas FK para desempenho de junção e para evitar problemas de bloqueio durante exclusões de linhas pai.
Quando devo usar JSONB em vez de colunas regulares?
Use JSONB para atributos opcionais, variáveis ou semi-estruturados. Mantenha dados relacionais centrais em colunas regulares. Sempre adicione um índice GIN em colunas JSONB para consultas de contenção.
Qual é a diferença entre TIMESTAMP e TIMESTAMPTZ?
TIMESTAMPTZ armazena timestamps com reconhecimento de fuso horário e converte internamente para UTC. TIMESTAMP armazena valores literais sem contexto de fuso horário. Sempre use TIMESTAMPTZ para evitar bugs de fuso horário.
Devo particionar minha tabela?
Considere particionamento para tabelas excedendo 100 milhões de linhas onde consultas filtram consistentemente por uma chave de partição como data. Particionamento adiciona complexidade, então use apenas quando benefícios claros existirem.
Como adicionar com segurança uma coluna NOT NULL a uma tabela grande?
Adicione a coluna como NULL primeiro, preencha os dados, depois altere para NOT NULL. Adicionar NOT NULL com um valor padrão volátil como now() causa uma reescrita completa da tabela. Use um valor padrão não volátil ou migração em múltiplas etapas.

开发者详情

文件结构

📄 SKILL.md