← Questões de Banco de Dados

Banco de Dados · CESPE/CEBRASPE · 2021

Questão comentada de Banco de Dados

Processo (codprocesso, autor, reu, dataultimamovimentacao, assunto, codjuiz) Juiz (codjuiz, nome) Considerando as tabelas anteriores, de um banco de dados relacional, assinale a opção cuja consulta em SQL mostra os nomes dos juízes para os quais não há processos distribuídos (relacionados).

Gabarito: C

Para descobrir quais juízes não têm processos vinculados, a lógica é olhar a tabela Juiz e verificar quem não aparece como referência na tabela Processo pela chave codjuiz. Em SQL, isso costuma ser feito com uma subconsulta e o operador NOT IN, ou com uma anti-join equivalente. Aqui, a ideia é simples: se o código do juiz não estiver na lista de códigos de juízes usados em Processo, então esse juiz não possui processos distribuídos. O ponto central é não confundir nome com código. A subconsulta retorna P.codjuiz, então a condição precisa comparar J.codjuiz com essa lista, e não J.nome. Quando você compara o atributo errado, a consulta até pode parecer elegante, mas entrega resultado sem sentido. SQL gosta de precisão, não de improviso. O gabarito C está correto porque faz exatamente isso: seleciona J.nome da tabela Juiz e filtra os juízes cujo J.codjuiz não aparece em (SELECT P.codjuiz FROM Processo AS P). Assim, sobram apenas os juízes sem processos relacionados. É a forma clássica de responder esse tipo de questão em prova. Só um cuidado de prova: em bancos reais, NOT IN pode ter comportamento problemático se a subconsulta trouxer NULL, mas em questões objetivas como esta a leitura esperada é essa comparação direta entre chaves. Em SQL, o raciocínio relacional é mais importante do que o enfeite da sintaxe.

Continue treinando

Questões relacionadas