Questão nº 43
Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2024 (nº 43)
Uma instituição financeira realiza o controle de empréstimos para pessoas físicas por meio de duas tabelas definidas segundo o Modelo Relacional de Dados, apresentadas a seguir.
```
CLI (CPF, nome, data-nascimento)
EMP (CPF-cli, data-emp, valor-emp)
```
A tabela CLI tem dados de clientes da instituição financeira, e a sua chave primária é CPF. A tabela EMP tem dados dos empréstimos realizados para cada cliente, e sua chave primária é formada por CPF-cli e data-emp, ou seja, um cliente pode pegar empréstimos em datas diferentes e não pode pegar mais de um empréstimo em uma mesma data. O valor do empréstimo é expresso em reais.
Um dos programas de controle de empréstimos utiliza o seguinte comando SQL:
```sql
SELECT CPF
FROM CLI C
WHERE NOT EXISTS (
SELECT *
FROM EMP E
WHERE C.CPF = E.CPF-cli
AND valor-emp < 10
)
```
Esse comando SQL apresenta o CPF dos clientes que
- Apossuem menos de 10 empréstimos.
- Bpossuem algum empréstimo realizado há menos de 10 dias.
- Cpossuem empréstimos, mas não estão cadastrados na tabela CLI.
- Dnão possuem nenhum empréstimo realizado com valor inferior a 10 reais. (alternativa correta)
- Enão possuem empréstimos.
Resposta comentada
Gabarito Alternativa D
Conceito-chave: A cláusula NOT EXISTS verifica se não existe nenhum registro na subconsulta que satisfaça a condição. Ou seja, o SELECT externo retorna apenas os clientes para os quais a subconsulta retorna zero linhas. A condição valor-emp < 10 filtra empréstimos baratos (menos de 10 reais). Se não existe nenhum empréstimo barato para aquele CPF, o NOT EXISTS é verdadeiro e o CPF aparece no resultado.
- (A) Incorreta: A consulta não conta empréstimos (
COUNT), apenas verifica a existência de um empréstimo com valor específico. Um cliente com 50 empréstimos caros (todos ≥ 10) apareceria no resultado, o que contradiz "menos de 10 empréstimos". - (B) Incorreta: A consulta não usa nenhuma função de data (
CURRENT_DATE,DATEDIFF). A condição é apenas sobre o valor (valor-emp < 10), não sobre a data do empréstimo. - (C) Incorreta: A consulta parte da tabela
CLI(clientes cadastrados) e faz uma correlação comEMP. Um cliente sem cadastro emCLInunca seria considerado, pois oFROMcomeça emCLI. - (D) Correta: Exatamente isso. O
NOT EXISTSretorna verdadeiro apenas quando a subconsulta (que busca empréstimos comvalor-emp < 10para aquele CPF) não encontra nenhuma linha. Portanto, o resultado são clientes que não possuem nenhum empréstimo com valor inferior a 10 reais. - (E) Incorreta: A armadilha da banca. Se um cliente não tem empréstimo nenhum, a subconsulta também retorna zero linhas e ele apareceria no resultado. Porém, a consulta também inclui clientes que têm empréstimos, desde que todos sejam ≥ 10 reais. A letra E diz "não possuem empréstimos", o que é um subconjunto do resultado, não a definição completa. O comando não distingue entre "sem empréstimos" e "com empréstimos caros" — ambos passam no filtro.
Fonte: CESGRANRIO BASA 01/2024 Técnico Científico - Área de Formação: Tecnologia da Informação (Caderno Prova B). Reproduzida para fins de estudo.