Questão 26 · Informática: Banco de dados
Texto associado à questão
Texto 9A1-I
As seguintes informações foram extraídas de um diagrama de entidades-relacionamento no contexto de um banco de dados relacional.
No modelo apresentado no texto 9A1-I, um cliente pode ser responsável por vários clientes (seus dependentes, por exemplo). Com base nisso, assinale a opção que indica o comando, em linguagem SQL, capaz de produzir uma listagem de todos os clientes (dependentes) cujos responsáveis estejam cadastrados, seguidos de seus respectivos responsáveis, exatamente nessa sequência (dependentes e responsáveis).
- A) SELECT NomeCliente, NomeCliente FROM Cliente WHERE CodCliente = Responsavel;
- B) SELECT a.NomeCliente, b.NomeCliente FROM Cliente a, Cliente b WHERE a.CodCliente = b.Responsavel;
- C) SELECT a.NomeCliente, b.NomeCliente FROM Cliente a, Cliente b WHERE b.CodCliente = a.Responsavel;
- D) SELECT b.NomeCliente, a.NomeCliente FROM Cliente a, Cliente b WHERE b.CodCliente = a.Responsavel;
- E) SELECT b.NomeCliente, a.NomeCliente FROM Cliente a, Cliente b WHERE a.Responsavel = b.CodCliente;
Marque a alternativa correta:
Gabarito: C
Gabarito definitivo divulgado pela banca Cebraspe (MPC/PA 2019).
Comentário
Gabarito: C.
Trata-se de um autorrelacionamento da tabela Cliente, em que cada cliente aponta para o seu responsável pelo campo Responsavel, que corresponde ao CodCliente do responsável. Para listar primeiro o dependente e depois o responsável, usa-se a tabela a como dependente e b como responsável, com a condição a.Responsavel = b.CodCliente. Na alternativa C, a condição aparece como b.CodCliente = a.Responsavel, que é equivalente, e a ordem do SELECT é a.NomeCliente (dependente) seguido de b.NomeCliente (responsável).
Erros das demais:
- A: não há junção entre as tabelas, e a mesma coluna aparece duas vezes.
- B: a ordem de exibição está invertida, pois a.NomeCliente seria o responsável, e a condição está ao contrário.
- D: a ordem do SELECT está invertida em relação ao que foi pedido.
- E: a condição está correta, mas o SELECT exibe primeiro o responsável, o que contraria a sequência exigida.
Dica: em autojunções, defina primeiro quem é a tabela do dependente e quem é a do responsável, e só então confira a ordem das colunas no SELECT.
Fundamentos: Autojunção em SQL (junção de uma tabela consigo mesma com alias) · Enunciado: sequência dependentes e responsáveis
Comentário gerado pela Cravei IA a partir do enunciado e do gabarito definitivo divulgado pela banca, e conferido por uma verificação automática. A IA pode errar: o gabarito oficial sempre prevalece.
Fonte: prova Cebraspe MPC/PA 2019 (Assistente Ministerial de Informática), questão 26, com o gabarito definitivo da banca. Comentário: Equipe Cravei · como fazemos e revisamos.