Documente Academic
Documente Profesional
Documente Cultură
as consultas feitas usando SQL. Uma consulta deve ser examinada (scanner), analisada (parser) e validada. O scanner identifica os componentes da linguagem ( tokens) no texto da consulta, enquanto o parser checa a sintaxe da consulta para determinar se esta foi formulada seguindo as regras de sintaxe (regras de gramtica) da linguagem. A consulta tambm ser validada, atravs da checagem de que todos os nomes de atributos e tabelas so vlidos e semanticamente significativos. Uma representao interna da consulta criada, geralmente usando uma estrutura de rvores ou grafos, chamada de rvore de consulta ou grafo de consulta. O SGBD deve ento determinar uma estratgia de execuo para recuperao dos resultados da consulta, dos arquivos internos do banco de dados. Uma consulta tipicamente possui vrias possveis estratgias de execuo, e o processo para escolher dentre elas uma melhor conhecido como otimizao de consultas. Duas abordagens so usadas no processamento de consultas: utilizao de regras heursticas e estimativa de custo. Usualmente, estas duas abordagens so combinadas na otimizao de uma consulta. Portanto a otimizao envolve: determinao de uma expresso equivalente mais eficiente, e seleo da "melhor" estratgia de processamento para a consulta (plano de acesso). Passos do processamento de consultas de alto nvel:
Consulta numa linguagem de alto nvel SCANNER, PARSER E VALIDAO Forma intermediria da consulta OTIMIZADOR DE CONSULTAS Plano de acesso (ou plano de execuo) GERADOR DE CDIGO Cdigo para executar a consulta PROCESSADOR DO BANCO DE DADOS Resultado da consulta
23
Pnumber,Dnum, Lname, Address, BDate ((( PLocation = Stafford (Project)) DNum=DNumber (Department)) MGRSsn=Ssn (Employee))
Correspondente consulta SQL: SELECT Pnumber,Dnum, Lname, Address, Bdate FROM Project, Department, Employee WHERE PLocation = Stafford AND Dnum=Dnumber AND MGRSsn=Ssn; As rvores de representao desta consulta so: 1a opo:
MGRSsn=Ssn
DNum=Dnumber
Employee
PLocation = Stafford
Department
Project
2a opo:
x x
Project Department Employee
24
Estratgia bsica: 1) Execute as operaes de seleo e projeo o mais cedo possvel 2) Execute outras transformaes (cascata de seleo ou projeo, comutatividade de junes, associatividade de junes, etc) que permitam utilizar a regra acima ou reduzam o tamanho das relaes intermedirias.
C1(C2(...(R)) Comutatividade de selees: C1(C2((R)) C2(C1((R)) Cascata de projees: L1(L2 (...(R)) L1(R) Comutatividade entre selees e projees: A(C (R)) C( A(R)) Comutatividade de junes: R C S S C R Comutatividade entre selees e junes: C (R S) (C(R)) S Comutatividade entre projees e junes: L(R S) A(R) B(S) Associatividade entre junes: (R S) T R (S T)
Exemplo de gerao de rvore de consulta: SELECT LName FROM Employee, Works_on, Project WHERE PName = Aquarius AND PNumber = Pno AND Essn = Ssn AND BDate > 13/12/70 1o passo: rvore cannica
LName
PName = Aquarius AND PNumber = Pno AND Essn = Ssn AND BDate > 13/12/70
x x
Employee Project
Works_on
25
LName
PNumber = Pno
x
Essn = Ssn
PName = Aquarius
x
BDate>13/12/70
Project Works_on
Employee
LName
Essn = Ssn
x
PNumber = Pno
BDate>13/12/70
x
PName= Aquarius
Employee Works_on
Project
26
LName
Essn = Ssn
PNumber = Pno
BDate>13/12/70
PName= Aquarius
Works_on Employee
Project
LName
Essn = Ssn
Essn
PNumber = Pno
Ssn, LName
BDate>13/12/70
PNumber
Essn, Pno
Employee
PName= Aquarius
Works_on
Project
27