CHAVES
- Amanda Nascimento

- 19 de fev. de 2023
- 3 min de leitura
Atualizado: 6 de set.
Em modelagem de dados, “chave” é sinônimo de identidade e integridade. É a forma como dizemos ao banco “quem é quem”, evitamos duplicidade, asseguramos relacionamentos e melhoramos desempenho de busca. Neste guia rápido, você verá os principais tipos de chaves, quando usar cada um, prós e contras — e exemplos curtos em SQL Server para aplicar na prática.
🗝️ Chave Primária - Primary Key (PK)
São valores únicos, identificados para cada linha de uma entidade (tabela). Cada entidade pode inclusive possuir mais de um identificador único.
Não permite nulos e costuma ter índice para garantir unicidade e velocidade.
🗝️ Chave Composta - Composite Key (CK)
Se não houver nenhuma chave primária entre as tabelas, você poderá criar um UID artificial, concatenando informações importantes para relacionar as entidades. Ou seja, você pode combinar duas ou mais colunas para criar um identificador.
É útil quando uma única coluna não é suficiente para identificar exclusivamente um registro. Identificação exclusiva depende de duas ou mais colunas combinadas.
🗝️ Chave Estrangeira - Foreign Key (FK)
É uma chave em alguma tabela que identifica exclusivamente linhas em outra tabela - ou, em outras palavras, uma chave que rastreia uma chave primária em outra tabela.
📌 O que são regras CASCADE?
Em bancos relacionais (como SQL Server, Oracle, MySQL, PostgreSQL), as regras CASCADE são instruções associadas a chaves estrangeiras (FOREIGN KEY) que determinam o que deve acontecer em registros filhos quando um registro pai é atualizado ou excluído.
🔹 Tipos principais de regras CASCADE
ON DELETE CASCADE
Se um registro da tabela pai for excluído, todos os registros relacionados na tabela filha também serão excluídos automaticamente.
Evita registros “órfãos”.
Se um Cliente for excluído, todos os seus Pedidos também serão removidos:
ON UPDATE CASCADE
Se a chave primária da tabela pai for alterada, os registros da tabela filha que dependem dela são automaticamente atualizados.
Muito útil, mas pouco usado em chaves “naturais” que podem mudar (ex.: CPF, CNPJ, código de produto).
Se o IdCliente mudar, todos os Pedidos vinculados terão o valor atualizado também.
NO ACTION (padrão)
Se tentar excluir/atualizar um registro pai que possui filhos, o SQL Server bloqueia a operação.
SET NULL
Quando o registro pai é excluído/alterado, a FK na tabela filha vira NULL.
⚠️É necessário que a coluna da FK permita NULL.
SET DEFAULT
Quando o registro pai é excluído/alterado, a FK na tabela filha recebe o valor padrão definido na coluna.
Quer treinar? Segue script:
🗝️ Super Chave - Super Key (SK)
Qualquer conjunto de colunas que identifica exclusivamente um registro; pode ter colunas redundantes (superset das candidatas).
Um conjunto de uma ou mais colunas que podem identificar exclusivamente um registro.
Uma chave primária é um caso especial de Super Key.
🗝️ Chave Candidata - Candidate Key (CK)
Coluna(s) que podem ser escolhidas como PK (chave primária); todas garantem unicidade.
🗝️ Chave Única - Unique Key (UK)
Garante a unicidade da combinação de colunas. Semelhante a chave primária mas pode ter um valor nulo. Tem restrição que garante unicidade sem ser PK. Em SQL Server, permite NULL (inclusive múltiplos).
🗝️ Chave Alternativa - Alternate Key (AK)
Chave candidata que não é a PK; normalmente implementada com UNIQUE.
É uma opção secundária para um identificador único.
🗝️ Chave Natural - Natural Key (NK)
Identificador nativo do domínio (ex.: CPF, e-mail). Pode mudar ou expor dados sensíveis.
É chave que ocorre naturalmente nos atributos de uma entidade, como um endereço de e-mail ou um número de segurança social.
🗝️ Chave de Substituição - Surrogate/Synthetic/Artificial Key (SK)
Uma chave artificial criada para uma tabela quando um identificador natural e único não esta disponível ou não é adequado. Não tem significado de negócio (ex.: IDENTITY, UUID), estável e ótimo para relacionamentos/histórico.
No SQL Server, quando usamos uma chave de substituição (surrogate key), normalmente criamos uma coluna numérica sequencial, sem significado de negócio, que serve apenas para identificar unicamente cada linha.
A forma mais comum de implementar isso é com a cláusula IDENTITY.
IDENTITY(seed, increment)
seed → valor inicial (primeiro número da sequência).
increment → de quanto em quanto a sequência será incrementada.
No caso de IDENTITY(1,1):
O primeiro registro inserido terá valor 1.
Cada novo registro será incrementado em +1.
🗝️ Chave Secundária - Secondary Key (SK2 / Nonclustered Index)
Não identifica registros; é um índice para acelerar buscas/filtragens específicas.
Utilizado para fins de recuperação de dados, não para identificação.
Ajuda na criação de índices não clusterizados.

