Considere o esquema de relações, observando que nesta notação a chave primária da relação está grifada (sublinhada)
Projeto(nroproj, nomeproj, depnum)
TrabalhaEm(CPF,nroproj)
Empregado(CPF, Nome, Sobrenome, dataNascimento)
Considere a consulta em álgebra relacional para obter Resultado:
Proj5 ← πnroproj(σdepnum=5(Projeto))
EmpProj ← πCPF,nroproj(TrabalhaEm)
EmpProj5 ← EmpProj ÷ Proj5
Resultado ← πNome,Sobrenome(EmpProj5 * Empregado)
Considere ainda que o operador DIVISION da álgebra relacional não está implementado em qualquer versão da linguagem SQL e que os operadores CONTAINS, EXCEPT, EXISTS E NOT EXISTS estão implementados em alguma versão da linguagem SQL.
Analise as consultas SQL I, II e III, descritas a seguir, em relação à expressão de consulta em álgebra relacional sobre o esquema de relações apresentado.
I) SELECT Nome, Sobrenome
FROM Empregado
WHERE ((SELECT TrabalhaEm.nroproj
FROM TrabalhaEm
WHERE Empregado.CPF=TrabalhaEm.CPF)
CONTAINS
(SELECT Projeto.nroproj
FROM Projeto
WHERE depnum=5));
II) SELECT Nome, Sobrenome
FROM Empregado
WHERE NOT EXISTS
((SELECT Projeto.nroproj
FROM Projeto
WHERE depnum=5)
EXCEPT
(SELECT TrabalhaEm.nroproj
FROM TrabalhaEm
WHERE Empregado.CPF=TrabalhaEm.CPF) );
III) SELECT Nome, Sobrenome
FROM Empregado E
WHERE NOT EXISTS
(SELECT *
FROM TrabalhaEm TE1
WHERE (TE1.nroproj IN (SELECT Projeto.nroproj
FROM Projeto
WHERE depnum=5))
AND
EXISTS (SELECT *
FROM TrabalhaEm TE2
WHERE TE2.CPF = TE1.CPF
AND E2.nroproj=TE1.nroproj));
Pode-se afirmar que a expressão de consulta em álgebra relacional: