A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Manipulação algébrica

Apresentações semelhantes


Apresentação em tema: "Manipulação algébrica"— Transcrição da apresentação:

1 Manipulação algébrica
Linguagens de alto nível servem para exprimir a intenção do utilizador - leitura declarativa leitura procedimental: pergunta especifica ordem de execução das operações Ao nível da execução a preocupação é a eficiência pode implicar reescrita da pergunta original noutra equivalente Equivalência de duas relações considera-se (neste capítulo) que os atributos têm nome e portanto a ordem por que aparecem na relação é irrelevante, sem introdução de ambiguidade relação enquanto conjunto de mapeamentos em vez de conjunto de tuplos

2 Ordem das junções Exemplo:
PESSOA( bi, nome, prédio ) CARRO( matricula, marca, dono ) PREDIO( P#, rua, cidade ) pergunta: quais as ruas e cidades onde moram as pessoas proprietárias de veículos de marca Renault? Estratégias de resolução (diferem na ordem de execução das junções) a) passagem sequencial de CARRO, com selecção marca=‘Renault’ junção com PESSOA pela chave junção com PREDIO pela chave b) passagem sequencial de PESSOA pesquisa sequencial da selecção de CARRO Mais eficiente: começa por relações pequenas, selecções da forma A=c

3 Árvores de análise a) rua, cidade rua, cidade b) ⋈ ⋈ predio=P#
dono=bi PREDIO marca=‘Renault’ dono=bi predio=P# marca=‘Renault’ PESSOA CARRO PESSOA PREDIO CARRO Res= {t| t=(r,c)  PESSOA(bi,n,p)  CARRO(m,‘Renault’,bi)  PREDIO(p,r,c) opção entre a) (mais eficiente) e b) não pode ser deixada ao utilizador captura-se a intenção, quer a formulação seja algébrica quer em cálculo aplica-se algoritmo de optimização, se não for excessivamente pesado

4 Leis de transformação algébrica
1 Leis comutativas para junções e produtos E1 E2 E2  E1 E1⋈ E2 E2 ⋈ E E1⋈F E2 E2 ⋈F E1 2 Leis associativas para junções e produtos (E1 E2)  E3  E1  (E2  E3) (E1⋈ E2) ⋈ E3  E1 ⋈ (E2 ⋈ E3) (E1⋈F1 E2) ⋈F2 E3  E1 ⋈F1 (E2 ⋈F2 E3) 3 Cascata de projecções A1,...,An (B1,...,Bm(E))  A1,...An(E) 4 Cascata de selecções F1 (F2 (E))  F1 .F2(E) 5 Comutação de selecções e projecções A1,...,An (F (E))  F (A1,...An(E))

5 Leis de transformação algébrica
6 Comutação de selecções e produtos F (E1 E2)  F3 [F1 (E1) F2 (E2)] 7 Comutação de selecções e reuniões F(E1  E2)  F(E1)  F(E2) 8 Comutação de selecções e diferenças F(E1 - E2)  F(E1) - F(E2) 9 Comutação de selecções e junções naturais F(E1 ⋈ E2)  F(E1) ⋈ F(E2) 10 Comutação de projecções e produtos A1,...,An (E1  E2))  B1,...,Bm(E1)  C1,...Ck(E2) 11 Comutação de projecções e reuniões A1,...,An (E1  E2)  A1,...An(E1)  A1,...An(E2)

6 Princípios da manipulação algébrica
Executar as selecções tão cedo quanto possível Combinar selecções com um produto cartesiano anterior para obter junções Combinar sequências de operações unárias Procurar subexpressões comuns numa expressão (vistas) Passos de um programa: Aplicação de uma projecção ou selecção simples Aplicação de uma selecção seguida de uma projecção Aplicação de um produto, reunião ou diferença, conjuntamente com selecções e/ou projecções nos operandos ou no resultado da operação binária, (trabalhando ao nível do tuplo)

7 Algoritmo de optimização
Entrada: expressão de álgebra relacional Saída: programa para avaliar a expressão Método: executar, por ordem, cada um dos seguintes passos Usar a lei 4 para transformar cada selecção F1 ... Fn(E) na cascata F1(... Fn(E) ...) Leis 4 a 9 puxar selecções para baixo Leis 3, 10, 11, 5 puxar as projecções para baixo Leis 3 a 5, simplificar cascatas Partição em grupos dos nós internos da árvore resultante, agrupando cada operador binário com os unários acima (e com os debaixo se estes atingirem as folhas) Cada grupo origina um passo do programa, avaliar das folhas para a raiz

8 Exemplo de optimização
Esquema da BD Livros( título, autor, enome, num ) Editores( enome, emorada, ecidade ) Utentes( nome, morada, cidade, cartão ) Requisições( cartão, num, data ) Vista Empréstimos = S[F(Livros  Utentes  Requisições)] em que S: título, autor, enome, num, nome, morada, cidade, cartão, data F: U.cartão=R.cartão  L.num=R.num Pergunta: quais os livros emprestados antes de ? título[data< (Empréstimos)]

9 Árvores de análise título título  L.num=R.num data < 2000-03-21
 título, autor, enome, L.num, nome, morada, cidade, U.cartão, data  U.cartão=R.cartão Livros  U.cartão=R.cartão  L.num=R.num data < Utentes Livros Requisições Requisições Utentes Árvore inicial Árvore intermédia

10 Programa título Grupo 2  L.num=R.num  R.num título, L.num Grupo 1
 U.cartão=R.cartão Livros R.num, R.cartão U.cartão data < Utentes Árvore final Requisições


Carregar ppt "Manipulação algébrica"

Apresentações semelhantes


Anúncios Google