Questão nº 66

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

FGV2024Analista Legislativo - Desenvolvedor de SistemasTecnologia da Informação
Gabarito: Aver 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
);

A saída gerada pela consulta:

select r.nome from recurso r left join alocacao a on a.id_recurso=r.id where a.id_projeto is null

apresenta o nome dos recursos

Resposta comentada

Gabarito Alternativa A

O LEFT JOIN (junção à esquerda) inclui todos os registros da tabela da esquerda (a primeira listada no FROM), mesmo que não haja correspondência na tabela da direita. Quando não há correspondência, as colunas da tabela da direita aparecem como NULL. A condição WHERE coluna_da_direita IS NULL é usada para filtrar e encontrar exatamente esses registros da tabela da esquerda que não têm correspondência na tabela da direita.

  • (A) Correta: A consulta LEFT JOIN alocacao a on a.id_recurso=r.id garante que todos os recursos (r) sejam listados. A condição WHERE a.id_projeto IS NULL filtra para mostrar apenas os recursos para os quais não foi encontrada nenhuma entrada correspondente na tabela alocacao. Isso significa que esses recursos não estão alocados a nenhum projeto.
  • (B) Incorreta: A consulta não envolve a tabela projeto diretamente na condição de filtro (WHERE), nem verifica a verba. O foco é na ausência de alocação, não na verba dos projetos.
  • (C) Incorreta: Esta alternativa usa uma linguagem figurativa que não corresponde ao significado técnico do LEFT JOIN ou ao resultado da consulta. "Distribuídos à esquerda" não tem sentido em SQL.
  • (D) Incorreta: Esta é a pegadinha. A condição a.id_projeto IS NULL não significa que existem projetos com identificação nula. id_projeto é uma chave estrangeira que referencia a chave primária da tabela projeto, que não pode ser nula. O NULL aqui surge porque o LEFT JOIN não encontrou um registro correspondente na tabela alocacao para aquele recurso, preenchendo as colunas de alocacao (incluindo id_projeto) com NULL. Portanto, significa que o recurso não está alocado, e não que está alocado a um projeto com ID nulo.
  • (E) Incorreta: A consulta não verifica nomes de projetos, nem sua ausência. O filtro está na existência de uma alocação para o recurso.

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