Questão de Banco de Dados — Conceitos e Fundamentos de Modelo Relacional — Quadrix 2025
- Código
- qa698957
- Banca
- Quadrix
- Órgão
- CRM MS
- Ano
- 2025
- Cargo
- Ana ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A afirmação está incorreta porque a chave estrangeira FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico) ON DELETE CASCADE define que, ao remover um médico, o SGBD propaga automaticamente a exclusão para as linhas correspondentes na tabela Participacoes, em vez de lançar um erro de violação de integridade referencial. A ação CASCADE é justamente o oposto do comportamento descrito no item.
A integridade referencial é uma das restrições fundamentais 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 tentamos excluir uma linha da tabela-pai (no caso, Medicos) que possui linhas dependentes na tabela-filha (Participacoes), o SGBD precisa decidir o que fazer com essas linhas órfãs. Essa decisão é controlada pela cláusula ON DELETE, que pode assumir diferentes ações: RESTRICT (ou NO ACTION), CASCADE, SET NULL e SET DEFAULT.
No script fornecido, a definição da tabela Participacoes contém:
FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico) ON DELETE CASCADEA ação CASCADE instrui o banco a excluir automaticamente todas as linhas da tabela Participacoes que referenciam o médico removido. Ou seja, a exclusão do médico é permitida e, em vez de um erro, ocorre uma exclusão em cascata: primeiro são apagadas as participações daquele médico e, em seguida, o próprio médico. Esse é o comportamento padrão esperado quando se usa ON DELETE CASCADE.
Se a intenção fosse impedir a remoção de médicos com participações registradas, a cláusula correta seria ON DELETE RESTRICT (ou NO ACTION), que faz o SGBD lançar uma violação de integridade referencial. A banca explora exatamente essa confusão: o candidato que conhece o conceito de integridade referencial, mas não presta atenção na ação específica definida, tende a marcar como certo, pois a ideia de "impedir a remoção" é associada à existência de uma FK. No entanto, a presença do CASCADE muda completamente o resultado.
Vamos comparar as ações mais comuns:
Ação ON DELETE | Comportamento ao excluir a linha-pai |
|---|---|
| Impede a exclusão; lança erro de violação de integridade referencial. |
| Exclui automaticamente as linhas dependentes (exclusão em cascata). |
| Define a chave estrangeira das linhas dependentes como NULL (exige que a coluna aceite nulos). |
| Define a chave estrangeira das linhas dependentes para um valor padrão. |
No caso concreto, como a ação é CASCADE, a remoção do médico não gera erro; ela é executada e as participações correspondentes são apagadas junto. Portanto, o item está errado.
A banca inverte o efeito da cláusula ON DELETE CASCADE. O candidato que sabe que uma FK impõe integridade referencial pode assumir que a exclusão será bloqueada, mas o CASCADE faz exatamente o oposto: propaga a exclusão. Fique atento à ação específica definida na FK — é ela que determina o comportamento.
A afirmação diz que "o sistema lançará um erro de violação de integridade referencial, pois a tabela Participacoes possui uma chave estrangeira que impede a remoção de médicos que tenham participado de congressos". Isso é falso porque a FK foi definida com ON DELETE CASCADE, que permite a remoção e apaga automaticamente as participações relacionadas. O erro só ocorreria se a ação fosse RESTRICT ou NO ACTION. Portanto, o item está errado.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qa698957