Em geral, muitas expressões de álgebra relacional distintas podem ser equivalentes entre si. Portanto, muitas árvores de consulta também podem ser equivalentes entre si, ou seja, elas podem corresponder à mesma consulta. Um processador de consulta típico de Sistemas Gerenciadores de Banco de Dados (SGBDs) gera uma árvore de consulta inicial para uma consulta SQL, sem considerar qualquer otimização. Um otimizador de consulta heurístico deve transformar a árvore inicial de consulta em uma árvore final de consulta que seja eficiente na execução e, para tanto, o otimizador deve incluir regras para equivalência entre expressões da álgebra relacional que possam ser aplicadas à árvore inicial. Observação: devido a dificuldades técnicas, nesta questão o símbolo |X| representa o operador Join da Álgebra Relacional.
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)
e a consulta SQL
SELECT Sobrenome
FROM Empregado E, TrabalhaEm T, Projeto P
WHERE P.nomeproj=’Aquario’ AND P.nroproj=T.nroproj AND T.CPF=E.CPF AND
E.dataNascimento > ‘1962-12-31’
Identifique a alternativa em que a árvore de consulta é mais otimizada e equivalente a essa consulta SQL: