Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Quadrix 2025

Banco de DadosSQL
Código
qg598671
Banca
Quadrix
Órgão
CRM-MS
Ano
2025
Nível
Superior
Cargo
Analista de Informática
O Hospital Campo Grande do Norte deseja gerenciar a participação de seus médicos em congressos médicos. Para isso, um banco de dados relacional foi projetado com as tabelas seguir.

Imagem da questão
Com base nessa situação hipotética, julgue o item a seguir.Caso um médico seja removido da tabela Medicos, 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.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Integridade referencial e a remoção de registros

Gabarito: ERRADO (letra E). A afirmação está incorreta porque a existência de uma chave estrangeira na tabela Participacoes não impede, por si só, a remoção de um médico da tabela Medicos. O comportamento do banco de dados ao tentar excluir um registro referenciado depende da ação referencial (ON DELETE) definida na restrição da chave estrangeira, que pode ser RESTRICT (bloquear), CASCADE (propagar), SET NULL, SET DEFAULT ou NO ACTION. A simples presença da chave estrangeira não garante que a remoção será bloqueada com erro.

A integridade referencial é um dos pilares do modelo relacional. Ela garante que uma tupla em uma relação que referencia outra relação precisa se referir a uma tupla existente na relação referenciada. Em outras palavras, uma chave estrangeira de uma relação deve existir como chave na relação referenciada. Essa restrição é implementada por meio de uma chave estrangeira (FOREIGN KEY), que é o atributo (ou conjunto de atributos) em uma tabela que referencia a chave primária (ou candidata) de outra tabela.

O ponto central da questão é entender que a integridade referencial não dita o que acontece quando se tenta excluir um registro referenciado. Ela apenas garante que, a cada instante, os valores da chave estrangeira correspondam a valores existentes na tabela referenciada. A política de exclusão é definida pela ação referencial especificada na cláusula ON DELETE da restrição de chave estrangeira. As ações mais comuns são:

  • RESTRICT / NO ACTION: impede a exclusão do registro referenciado se houver dependentes, lançando um erro de violação de integridade referencial. É o comportamento padrão em muitos SGBDs.

  • CASCADE: exclui automaticamente os registros dependentes (na tabela Participacoes) quando o registro referenciado (na tabela Medicos) é excluído.

  • SET NULL: define o valor da chave estrangeira como NULL nos registros dependentes, desde que a coluna aceite valores nulos.

  • SET DEFAULT: define o valor da chave estrangeira como um valor padrão nos registros dependentes.

Portanto, a afirmação do enunciado só seria verdadeira se a chave estrangeira tivesse sido definida com ON DELETE RESTRICT (ou NO ACTION). Como o enunciado não informa qual ação referencial foi definida, não se pode afirmar que a remoção lançará um erro. O banco de dados poderia, por exemplo, excluir em cascata as participações do médico, ou anular a referência, sem lançar erro algum.

A pegadinha da banca está em generalizar o comportamento do banco de dados: ela parte do princípio de que toda chave estrangeira bloqueia a exclusão, mas isso só ocorre com a ação referencial RESTRICT. A banca explora a confusão entre a existência da restrição (que garante a consistência) e a ação tomada ao violar a restrição (que é configurável).

Guarde a distinção: a integridade referencial define a regra (o valor da FK deve existir na tabela referenciada), mas a ação referencial (ON DELETE) define a consequência de tentar quebrar essa regra. É exatamente nessa fronteira que a questão se decide.

Critério

ON DELETE RESTRICT / NO ACTION

ON DELETE CASCADE

ON DELETE SET NULL

Efeito ao excluir médico com participações

Bloqueia a exclusão e lança erro de integridade referencial

Exclui automaticamente as participações do médico

Define a FK da participação como NULL (se a coluna permitir)

Lançamento de erro

Sim

Não

Não

Exige configuração explícita na FK?

Não (padrão em muitos SGBDs)

Sim

Sim

Resultado para a tabela Participacoes

Nenhuma alteração (exclusão não ocorre)

Registros dependentes são removidos

Registros permanecem, mas perdem a referência ao médico

Alternativa C — ❌ Incorreta

A alternativa afirma que a remoção de um médico da tabela Medicos lançará um erro de violação de integridade referencial porque a tabela Participacoes possui uma chave estrangeira. O erro está em generalizar o comportamento do banco de dados. A presença da chave estrangeira não determina, por si só, que a exclusão será bloqueada. O que determina é a ação referencial configurada na restrição. Se a chave estrangeira foi definida com ON DELETE CASCADE, por exemplo, a exclusão do médico propagará a exclusão das participações, sem lançar erro. Se foi definida com ON DELETE SET NULL, as participações terão a chave estrangeira anulada, também sem erro. Somente com ON DELETE RESTRICT (ou NO ACTION) o banco lançará o erro de violação de integridade referencial. Como o enunciado não especifica a ação referencial, a afirmação é incorreta.

Alternativa E — ✅ Correta ⟵ GABARITO

A alternativa está correta porque a afirmação do enunciado é falsa. A existência de uma chave estrangeira na tabela Participacoes não implica, necessariamente, que a remoção de um médico da tabela Medicos lançará um erro. O comportamento depende da ação referencial (ON DELETE) definida na restrição. Sem essa informação, não se pode afirmar que haverá erro. Portanto, o item está errado.

Gabarito: letra E

Link permanente: /questoes/qg598671