ATPS programação Banco de Dados Etapas 3,4,5
ETAPA 3
Passo 1
O primeiro passo do processo de consulta é convertê-la numa representação interna, eliminando, assim, as considerações puramente de nível externo e, assim, abrindo o caminho para os estágios subseqüentes do processo de otimização. Levanta-se, obviamente, a questão: sobre o que o formalismo deveria basear-se a representação interna? Qualquer que seja o escolhido, deve ser rico o suficiente para representar todas as consultas possíveis na linguagem de consulta de sistema. Deve também ser o mais neutro possível, no sentido de que não prejudicará as opções subseqüentes de otimização. A forma interna usada, tipicamente, é um tipo de árvore de sintaxe abstrata ou árvore de consulta. Para nossos objetivos, contudo, é mais conveniente assumirmos que a representação interna usa um dos formalismos já conhecidos - a saber, a álgebra relacional ou cálculo relacional. Uma árvore de consulta pode ser considerada apenas como versão codificada de determinada expressão de um dos dois formalismos. Para assentarmos nossas idéias, partimos do princípio, neste caso, de que o formalismo é a álgebra especificamente. A expressão algébrica poderia ser :( (S JOIN SP) WHERE P # = ' P2 ' ) [SNAME] A maioria das linguagens permite que as consultas mais simples sejam expressas em diversas maneiras, distintas apenas superficialmente. Por exemplo, mesmo uma consulta simples como aquela discutida acima - (Obter nomes de fornecedores que forneçam a peça P2) - pode ser expressa em pelo menos sete maneiras aparentemente diferentes em SQL. O próximo passo no processamento da consulta deve ser converter a representação interna numa forma padrão equivalente, com o objetivo de se eliminar estas distinções superficiais e (mais importante) descobrir a representação mais eficiente do que a original , de uma forma específica. Procedemos , pois, à transformação do resultado do Estágio 1 numa forma equivalente, porém mais eficiente, usando certas regras de transformação