Questão nº 65

Questão de Tecnologia da Informação · FGV ALEP 2024 (nº 65)

FGV2024Analista Legislativo - Desenvolvedor de SistemasTecnologia da Informação
Gabarito: Dver comentário ↓

Atenção, o enunciado a seguir refere-se às duas próximas questões.
Considere o esquema relacional a seguir, implementado em SQL.

create table recurso
(
 id integer primary key,
 nome varchar(20) not null,
 valor real
);
create table projeto
(
 id integer primary key,
 nome varchar(20) not null,
 verba real
);
create table alocacao
(
 id_recurso integer,
 id_projeto integer,
 primary key(id_recurso,id_projeto),
 foreign key(id_recurso) references recurso,
 foreign key(id_projeto) references projeto
);

Assinale a opção que apresenta a consulta que gera como resultado de execução uma lista com o nome dos recursos alocados em todos os projetos cadastrados.

Resposta comentada

Gabarito Alternativa D

O conceito-chave aqui é a divisão relacional, que é usada para encontrar itens que estão relacionados a todos os itens de um outro conjunto. Em SQL, isso é comumente resolvido usando duas cláusulas `NOT EXISTS` aninhadas, que traduzem a ideia de "não existe nenhum X para o qual não exista um Y relacionado".

(A) Incorreta: Esta consulta retorna o nome de todos os recursos, sem aplicar nenhum filtro relacionado à alocação em projetos.
(B) Incorreta: Esta consulta retorna o nome dos recursos que não estão alocados em nenhum projeto, o que é o oposto do que foi pedido.
(C) Incorreta: Esta consulta filtra recursos com base no seu valor em comparação com a média, não tendo relação com a alocação em projetos.
(D) Correta: Esta consulta implementa a lógica da divisão relacional usando o padrão de `NOT EXISTS` aninhado. Ela seleciona os recursos `r` para os quais não existe nenhum projeto `p` tal que `r` não esteja alocado a `p`. Em outras palavras, ela encontra os recursos que estão alocados a todos os projetos cadastrados.
(E) Incorreta: Esta consulta retorna o nome dos recursos que estão alocados em pelo menos um projeto.
Armadilha: A armadilha aqui é confundir "alocado em todos os projetos" com "alocado em pelo menos um projeto". A palavra "todos" exige a lógica mais complexa da divisão relacional (duplo `NOT EXISTS`), enquanto "pelo menos um" (ou "qualquer") é resolvido com um simples `EXISTS` (como nesta alternativa) ou um `INNER JOIN`.

Fonte: FGV ALEP 2024 Analista Legislativo - Desenvolvedor de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho