0Pricing
SQL Interview Prep · Aula

Chaves primárias, estrangeiras e restrições

Explique chaves, exclusividade e integridade referencial da forma que o entrevistador espera ouvir.

Chaves primárias, estrangeiras e restrições é uma aula grátis de SQL Interview Prep no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Interview Prep inclui 4 aulas no total.

Por que as chaves sempre aparecem

Depois de definir SQL, os entrevistadores passam para chaves e restrições. O tema que as conecta é a integridade: regras impostas pelo banco de dados para impedir a entrada de dados inválidos.

O que é uma chave primária

Uma chave primária identifica cada linha de forma exclusiva. Ela é sempre exclusiva e NOT NULL, e uma tabela pode ter no máximo uma. Diga isso com clareza para ganhar pontos.

CREATE TABLE customers (
  id INTEGER PRIMARY KEY,
  email VARCHAR(255) NOT NULL,
  name VARCHAR(100)
);

Chaves naturais versus substitutas

Dados reais ou um número gerado? Uma chave natural usa dados exclusivos já existentes; uma chave substituta é um identificador gerado. A maioria das equipes prefere chaves substitutas: elas são estáveis.

Chaves primárias compostas

Uma chave primária pode abranger mais de uma coluna, formando uma chave composta. Você encontra essas chaves em tabelas de associação, nas quais duas chaves estrangeiras identificam cada linha em conjunto.

CREATE TABLE enrollments (
  student_id INTEGER,
  course_id INTEGER,
  enrolled_on DATE,
  PRIMARY KEY (student_id, course_id)
);

Chave primária versus restrição de unicidade

Uma pergunta quase certa: chave primária versus restrição de unicidade. Ambas impõem exclusividade, mas uma tabela tem uma chave primária (NOT NULL) e várias restrições de unicidade (cada uma permite um NULL).

CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  email VARCHAR(255) UNIQUE,
  username VARCHAR(50) UNIQUE
);

O que é uma chave estrangeira

Uma chave estrangeira referencia a chave primária de outra tabela, impondo integridade referencial: você não pode adicionar uma linha filha que aponte para um registro pai inexistente.

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  customer_id INTEGER REFERENCES customers(id),
  amount NUMERIC(10,2)
);

Ações referenciais: ON DELETE / ON UPDATE

"O que acontece com os pedidos se o cliente for excluído?" Isso é uma ação referencial: RESTRICT bloqueia a operação (é o padrão), CASCADE exclui os registros filhos e SET NULL limpa a chave.

CREATE TABLE order_items (
  id INTEGER PRIMARY KEY,
  order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE
);

NOT NULL, CHECK e DEFAULT

Mais três restrições completam a integridade: NOT NULL proíbe valores ausentes, CHECK impõe uma regra como stock >= 0 e DEFAULT fornece um valor substituto.

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  price NUMERIC(10,2) NOT NULL DEFAULT 0,
  stock INTEGER CHECK (stock >= 0)
);

Exemplo prático: projetando com integridade

Vamos projetar uma tabela de empréstimos de uma biblioteca. O código abaixo usa duas chaves estrangeiras, uma data de devolução NOT NULL e uma regra de unicidade para impedir que um livro seja emprestado duas vezes ao mesmo tempo.

CREATE TABLE loans (
  id INTEGER PRIMARY KEY,
  book_id INTEGER NOT NULL REFERENCES books(id),
  member_id INTEGER NOT NULL REFERENCES members(id),
  due_date DATE NOT NULL,
  returned BOOLEAN DEFAULT false
);

Como falar sobre integridade

Mencione os três tipos de integridade para demonstrar conhecimento aprofundado: de entidade, proveniente das chaves primárias; referencial, proveniente das chaves estrangeiras; e de domínio, proveniente de NOT NULL, CHECK e dos tipos.

Adicionando restrições a uma tabela existente

Pediriam que você adicionasse restrições a uma tabela existente? Use ALTER TABLE ... ADD CONSTRAINT. Vale destacar um detalhe: a operação pode falhar se as linhas atuais já violarem a nova regra.

ALTER TABLE orders
  ADD CONSTRAINT fk_orders_customer
  FOREIGN KEY (customer_id) REFERENCES customers(id);

Verificação rápida

Diferencie uma chave primária de uma restrição de unicidade.

Recapitulação

Recapitulação: uma chave primária é exclusiva e NOT NULL, há uma por tabela; uma restrição de unicidade permite um NULL e você pode ter várias; uma chave estrangeira impõe integridade referencial.

Perguntas Frequentes

A aula “Chaves primárias, estrangeiras e restrições” é grátis?

Sim — o texto completo de “Chaves primárias, estrangeiras e restrições” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Interview Prep, atualize para CoddyKit PRO. O curso de SQL Interview Prep inclui 4 aulas no total.

O que vou aprender em “Chaves primárias, estrangeiras e restrições”?

Explique chaves, exclusividade e integridade referencial da forma que o entrevistador espera ouvir. Você pratica SQL Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Interview Prep?

Nenhuma experiência prévia é necessária. SQL Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Chaves primárias, estrangeiras e restrições”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Interview Prep?

Sim. Cada aula de SQL Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O que é SQL e por que entrevistadores perguntam sobre isso
  2. Ordem lógica de execução de consultas
  3. Chaves primárias, estrangeiras e restrições
  4. Lendo um esquema sob pressão
← Voltar para SQL Interview Prep