Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg598671
- Banca
- Quadrix
- Órgão
- CRM-MS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Informática

- CCerto
- EErrado

GabaritoE — Errado
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 |
|
|
|
|---|---|---|---|
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 |
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.
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