Questão de Banco de Dados — Conceitos e Fundamentos de Modelo Relacional — Quadrix 2025
- Código
- qa698955
- Banca
- Quadrix
- Órgão
- CRM MS
- Ano
- 2025
- Cargo
- Ana ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: CERTO (letra C). A remoção de um congresso da tabela Congressos dispara a ação ON DELETE CASCADE declarada na chave estrangeira de Participacoes, apagando automaticamente os registros de participação que referenciam aquele congresso; os médicos, porém, permanecem na tabela Medicos, pois não há nenhuma chave estrangeira apontando para eles a partir de Congressos ou Participacoes que propague a exclusão. A regra está literalmente no comando CREATE TABLE Participacoes, que define FOREIGN KEY (id_congresso) REFERENCES Congressos(id_congresso) ON DELETE CASCADE.
A integridade referencial é um dos pilares do modelo relacional: ela garante que um valor de chave estrangeira em uma tabela sempre corresponda a um valor de chave primária existente na tabela referenciada. Quando essa correspondência seria violada por uma operação de exclusão, o banco precisa tomar uma ação — e é exatamente isso que as cláusulas ON DELETE definem. As opções mais comuns são:
CASCADE: apaga em cascata as linhas dependentes (as que referenciam a linha excluída).
SET NULL: define a chave estrangeira das linhas dependentes como NULL (exige que a coluna aceite nulos).
SET DEFAULT: atribui o valor padrão da coluna às linhas dependentes.
RESTRICT / NO ACTION: impede a exclusão enquanto existirem referências.
No caso concreto, a tabela Participacoes é uma tabela de ligação entre Medicos e Congressos, representando um relacionamento muitos-para-muitos (N:M). Ela possui duas chaves estrangeiras, ambas com ON DELETE CASCADE: uma para Medicos(id_medico) e outra para Congressos(id_congresso). Isso significa que, ao excluir um congresso, o SGBD automaticamente remove todas as linhas de Participacoes cujo id_congresso corresponda ao congresso excluído. Já a tabela Medicos não é afetada, pois nenhuma chave estrangeira em Congressos ou Participacoes referencia Medicos de forma que a exclusão do congresso propague para ela — a cascata só atinge a tabela que possui a FK com CASCADE.
Para visualizar o fluxo da exclusão:
A pegadinha que a banca explora aqui é justamente a direção da cascata: muitos candidatos imaginam que, por haver ON DELETE CASCADE na FK de Participacoes para Medicos, a exclusão de um congresso apagaria também os médicos. Mas a cascata só age na tabela que contém a chave estrangeira — Participacoes — e somente quando a linha referenciada (o congresso) é excluída. A FK de Participacoes para Medicos só dispararia se um médico fosse excluído, não um congresso. Portanto, a afirmativa está correta: os registros de participação são apagados automaticamente, e os médicos permanecem.
A afirmativa descreve com precisão o comportamento do ON DELETE CASCADE na chave estrangeira id_congresso da tabela Participacoes. Ao remover um congresso, o SGBD apaga em cascata todas as linhas de Participacoes que referenciam aquele congresso, e como não há nenhuma chave estrangeira que propague a exclusão para Medicos, os médicos permanecem na tabela. A definição da tabela Participacoes deixa isso explícito:
CREATE TABLE Participacoes (trecho relevante):
FOREIGN KEY (id_congresso) REFERENCES Congressos(id_congresso) ON DELETE CASCADE
A cascata é unidirecional: ela parte da tabela referenciada (Congressos) em direção à tabela que contém a FK (Participacoes). A outra FK, FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico) ON DELETE CASCADE, só teria efeito se um médico fosse excluído — o que não é o caso. Assim, a exclusão do congresso não toca a tabela Medicos.
Gabarito: letra C (CERTO).
Link permanente: /questoes/qa698955