Na linguagem SQL, não existe a operação de divisão relaciona...
( ) select distinct a.Y from R as a where not exists ( select * from S as b where not exists (
select * from R as c where (c.Y=a.Y) and (c.X=b.X) ) );
( ) select P.Y from R as P, S as T where P.X = T.X group by P.Y having count(P.Y) = (select count(X) from S); A sequência das atribuições, de cima para baixo, é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - V, V, V.
Para resolver questões como essa, é crucial entender o conceito de divisão relacional em álgebra relacional e como simular essa operação em SQL. A divisão relacional é usada para encontrar tuplas em uma relação que possuem uma correspondência com todas as tuplas em outra relação. Em outras palavras, queremos encontrar elementos na tabela R que estão relacionados com todos os elementos da tabela S em um determinado atributo.
Vamos verificar o porquê de a Alternativa E estar correta:
- O primeiro comando SQL faz uma seleção dos registros da coluna Y de R onde todos os valores de X que existem em S também estão em R. O 'group by' e o 'having count(*)' garantem que apenas as Y que correspondem a todas as entradas de X em S sejam selecionadas, simulando a operação de divisão.
- O segundo comando usa uma abordagem diferente, com subconsultas correlatas e o operador 'exists'. Aqui, procura-se por todos os Y em R onde não existe nenhum X em S que não esteja também relacionado com esse Y em R. Isso efetivamente captura o resultado da divisão relacional.
- O terceiro comando também se assemelha a uma divisão, mas faz isso através de uma junção e contagem. Seleziona-se Y de R, juntando-se com S onde os valores de X são iguais, e agrupando-se por Y. O 'having count(P.Y)' compara com a quantidade total de registros em S, garantindo que apenas os Y relacionados com todos os X de S sejam selecionados.
Portanto, todas as três tentativas de simulação da divisão relacional estão corretas e funcionariam como esperado em SQL, por isso a Alternativa E é a correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
http://www.itnerante.com.br/profiles/blogs/divis-o-relacional-part-i
http://www.itnerante.com.br/profiles/blogs/divis-o-relacional-parte-ii
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo