Questão de Banco de Dados — Banco de Dados Relacionais — FUNDATEC 2023
- Código
- qq896745
- Banca
- FUNDATEC
- Órgão
- PROCERGS
- Ano
- 2023
- Nível
- Superior
- Cargo
- ANC - Analista em Computação - Ênfase em Desenvolvimento Oracle PL/SQL
- A

- B

- C

- D

- E






GabaritoC — [imagem]
Gabarito: letra C. A consulta que busca elementos que se relacionam com todos os itens de outro conjunto é classicamente resolvida em SQL utilizando a técnica de {{divisão relacional}}, implementada através de uma estrutura de dupla negação com NOT EXISTS.
O problema pede as pessoas que trabalharam em todos os projetos. A lógica de dupla negação funciona da seguinte forma: "selecione as pessoas para as quais não existe um projeto que elas não tenham trabalhado". Ou seja, se não existe um projeto sequer que a pessoa tenha deixado de participar, então ela participou de todos.
Esta alternativa implementa corretamente a lógica de dupla negação:
O SELECT externo busca pessoas (PE).
O primeiro NOT EXISTS verifica se não há projetos (PR) que satisfaçam a condição interna.
O segundo NOT EXISTS (dentro do primeiro) verifica se não há uma associação na tabela ProjetosPessoas (PP) entre a pessoa atual e o projeto atual. Se essa associação não existir, significa que a pessoa não trabalhou naquele projeto, invalidando a pessoa para o resultado final.
Alternativa A: Utiliza ALL de forma sintaticamente incorreta para o objetivo de divisão e não estabelece a relação de exclusão necessária para verificar a participação em todos os itens.
Alternativa B: Utiliza IN e EXISTS de forma que apenas verifica se a pessoa trabalhou em pelo menos um projeto, não em todos.
Alternativa D: Utiliza LEFT JOIN com EXISTS, o que não garante a restrição de "todos" os projetos, falhando na lógica de divisão.
Alternativa E: A estrutura está invertida, buscando projetos em vez de pessoas, e não implementa a lógica de negação necessária para a divisão relacional.
Sempre que a questão pedir "todos", "cada" ou "somente", desconfie de consultas simples com JOIN ou IN. A estrutura de dupla negação (NOT EXISTS dentro de NOT EXISTS) é o padrão ouro para resolver problemas de divisão relacional em SQL.
Gabarito: letra C
Link permanente: /questoes/qq896745