Questão 21 - SQL

 

Questão:

Uma empresa exporta uma linha de produtos para diversos países da América Latina. Esses produtos são transportados em containers. Cada pedido pode conter diferentes tipos de produtos. Os produtos de uma mesmo pedido podem ser transportados em um único container ou em vários containers (Ex: um pedido com 10 toneladas de grãos de soja pode ser transportado em dois containers, cada um com 5 toneladas).
 
Para que um container possa ser utilizado em uma exportação, o mesmo não pode estar em uso. Dessa forma, os containers que não estejam associados a pedidos com status “Em andamento” podem ser usados em novas exportações. 
 
Por essa empresa estar em constante crescimento, semanalmente são adquiridos novos containers que ficam disponíveis no galpão central até serem requisitados para uso.
 
Abaixo podemos visualizar parte do modelo que mantem os dados desse sistema.
 
 

O gerente geral da empresa solicitou um relatório a área de TI, o mesmo foi obtido com a seguinte consulta:


SELECT distinct(cont.cod) FROM

Pedido ped INNER JOIN Produto prod

ON ped.id = prod.id_pedido

INNER JOIN Associado ass

ON prod.cod = ass.cod_produto

INNER JOIN Container cont

ON ass.cod_container=cont.cod

WHERE ped.status<>”Em andamento”;


A respeito do relatório e do modelo apresentado analise as seguintes afirmativas:


I - O relatório será composto apenas por uma coluna que corresponde ao código do container.

II - Se o container foi utilizado em mais de um pedido, então ele aparecerá mais de uma vez no relatório.

III - O relatório irá resgatar todos os containers da empresa que estão disponíveis para uso em novas exportações.

IV - Analisando apenas o modelo e o cenário apresentado, podemos concluir que: se não houvesse nenhum pedido com status “Em andamento”, todos os containers estariam disponíveis para uso.


Estão corretas as afirmativas:

(A) I e II, III e IV

(B) I, III e IV

(C) I e IV

(D) I, II e IV
 
 

Comentários:

Pessoal, essa é uma questão de banco de dados que cobra a estrutura de uma consulta e foca basicamente na junção interna.
 
Apenas os atributos especificados na cláusula SELECT irão compo a relação resultante da consulta. Por esse motivo, a primeira afirmativa esta correta.
 
Nessa consulta, a cláusula DISTINCT eliminará todos os valores duplicados. Dessa forma, podemos concluir que a segunda afirmativa esta errada.
 
A junção interna tem como uma de suas características resgatar apenas as tuplas que satisfaçam a condição de junção e possuam correspondência em todas as tabelas envolvidas.
Na consulta analisada, todas as tabelas foram envolvidas pelas junções internas, por isso, somente os containers que não estão com status “Em andamento” e que já foram vinculados a algum pedido serão resgatados. Os containers novos que nunca foram usados pela empresa estarão de fora da consulta. Por isso, a terceira afirmativa esta errada.
 
A última questão esta correta, o enunciado mencionou que apenas os containers vinculados a pedidos com status “Em andamento” estariam indisponíveis. Na ausencia de pedidos com tal status, podemos afirmar que todos os containers estão disponíveis.
 
Dessa forma, temos a alternativa C como gabarito da questão!