DB -Algebra Relazionale
LINGUAGGI PER MODELLI RELAZIONALI Algebrici: una query è definita da un’espressione algebrica sulle relazioni dello schema Logici: una query è definita da una formula della logica del primo ordine; in particolare se è una collezione di formule di Horn senza funzioni si ha il Datalog DB -Algebra Relazionale
DB -Algebra Relazionale ESEMPIO DI QUERY DB -Algebra Relazionale
OPERATORI DELL’ALGEBRA Gli operatori primitivi dell’Algebra Relazionale sono: Ridenominazione; Unione; Differenza; Proiezione; Restrizione (o Selezione); Prodotto. I simboli R,S,... denotano relazioni, A, B,…attributi e X,Y,…insiemi di attributi DB -Algebra Relazionale
DB -Algebra Relazionale Ridenominazione Siano X gli attributi di R, A in X, B not in X . Allora AB(R) è con attributi (X-{A}){B} AB(R)={t | u R t[B] = u[A] t[C]=u[C] se C e’ diverso da B}. DB -Algebra Relazionale
ESEMPIO di Ridenominazione Matricola Codice Studente(Esami) DB -Algebra Relazionale
DB -Algebra Relazionale Unione e Differenza Siano R ed S relazioni dello stesso tipo allora RS = {t | t R t S} R-S = {t | t R tS} DB -Algebra Relazionale
DB -Algebra Relazionale Esempi S R R-S RS DB -Algebra Relazionale
DB -Algebra Relazionale Proiezione Sia R una relazione e siano A1, A2,…, An alcuni suoi attributi allora: A1, A2,…, An (R) = {t[A1, A2,…, An ] | tR} DB -Algebra Relazionale
DB -Algebra Relazionale Esempio R Proiezione A,B (R) DB -Algebra Relazionale
Restrizione(Selezione) Sia R una relazione allora (R) = {t | t R (t)} dove e’ una formula proposizionale costruita a partire dagli atomi AB, dove A e B sono attributi di R o costanti e {=,<, >}, utilizzando i connettivi proposizionali ,,. DB -Algebra Relazionale
DB -Algebra Relazionale Esempio Selezione A=X (R) DB -Algebra Relazionale
DB -Algebra Relazionale Prodotto Siano R(A1: T1,…, An: Tn) ed S (An+1: Tn+1,…, An+m: Tn+m) con {A1,…, An} {An+1,…, An+m}= . Allora si pone R x S = {tu | tR u S} DB -Algebra Relazionale
DB -Algebra Relazionale Esempio R S R x S DB -Algebra Relazionale
DB -Algebra Relazionale Operatori Derivati Sono operatori utili che si possono esprimere in funzioni di quelli primitivi. Intersezione: Siano R ed S dello stesso tipo RS = {t | tR t S}. Essa si può esprimere in funzione degli operatori primitivi: R S = R-(R-S) DB -Algebra Relazionale
Divisione(Quoziente) Divisione: Siano XY gli attributi di R ed Y quelli di S, allora R/S = {w | {w} x S R}. Per far vedere che / e’ derivato basta osservare che R/S = X (R) - T dove T = X (( X (R) x S) - R). DB -Algebra Relazionale
DB -Algebra Relazionale Uso della divisione La divisione serve a rispondere a query del tipo: trova tutte le n-uple di R associate a tutte le n-uple di S. Ad esempio {‘DBI’,’Progr’}= Corso Corso=‘DBI’ Corso=‘Progr’ (Esami) ( Matricola,Corso Esami)/ {‘DBI’,’Progr’} = matricole di studenti che hanno superato DBI e Progr. DB -Algebra Relazionale
DB -Algebra Relazionale Giunzione(Equijoin) Siano R(A1: T1,…, An: Tn) ed S (An+1: Tn+1,…, An+m: Tn+m) con {A1,…, An} {An+1,…, An+m}= . Allora si pone R 1 Ai = Ak S = {tu | tR, u S , t.Ai =u.Ak} i=1…. n, k= n+1…. n+m. La giunzione e’ derivata perche’ R 1 Ai = Ak S = Ai = Ak (R x S) DB -Algebra Relazionale
Studenti 1 Codice= MatricolaEsami NOME CODICE MATRICOLA INDIRIZZO TELEFONO CORSO VOTO Mario Rossi 123456 Via Etnea 1 222222 Architetture 30 Ugo Bianchi 234567 Via Roma 2 333333 Programmazione 18 DB -Algebra Relazionale
Giunzione Naturale(Natural join) Siano R con attributi XY ed S con attributi YZ R 1 S e’ una relazione di attributi XYZ costituita da tutte le n-uple t tali che: t[XY] R , t[YZ] S. R 1 S = {t | t[XY] R t[YZ] S} La giunzione e’ derivata perché Si rinominano gli attributi Y in S come Y’ e si ottiene S’. Si opera la giunzione (equijoin) rispetto ad Y ed Y’. Si proietta rispetto a XYZ R 1 S= XYZ (R 1 Y=Y’ S’) DB -Algebra Relazionale
DB -Algebra Relazionale Studenti 1 Esami NOME MATRICOLA INDIRIZZO TELEFONO CORSO VOTO Mario Rossi 123456 Via Etnea 1 222222 Architetture 30 Ugo Bianchi 234567 Via Roma 2 333333 Programmazione 18 27 DB -Algebra Relazionale
Semi-giunzione(Semi-join) Siano R con attributi XY ed S con attributi YZ R S e’ una relazione di attributi XY costituita da tutte le n-uple di R che partecipano a R 1 S. La semi-giunzione e’ derivata perché R S= XY (R 1 S) DB -Algebra Relazionale
DB -Algebra Relazionale Studenti Esami NOME MATRICOLA INDIRIZZO TELEFONO Mario Rossi 123456 Via Etnea 1 222222 Ugo Bianchi 234567 Via Roma 2 333333 DB -Algebra Relazionale
DB -Algebra Relazionale Giunzione Esterna La giunzione esterna è la giunzione naturale estesa con tutte le n-uple che non appartengono alla giunzione naturale, completate con valori null per gli attributi mancanti. Siano R[XY],S[YZ] R S = (R 1 S) ((R- XY (R 1 S)){Z=null} {X=null} ((S- YZ (R 1 S))) DB -Algebra Relazionale
DB -Algebra Relazionale Ordini 1/ Agenti ORDINE CLIENTE ARTICOLO AGENTE ZONA 1 123456 A1 222222 PISA 2 234567 A2 333333 CATANIA 3 345678 A3 444444 NULL 555555 ROMA DB -Algebra Relazionale
Altre Giunzioni Esterne Nelle giunzioni esterne sinistre e destre si aggiungono solo le parti sinistre e destre. Siano R[XY],S[YZ] (giunzione esterna sinistra) R 1 S = (R 1 S) ((R- XY (R 1 S){Z=null} (giunzione esterna destra) R 1 S = (R 1 S) {X=null} ((S- YZ (R 1 S))) DB -Algebra Relazionale
DB -Algebra Relazionale Ordini 1 Agenti ORDINE CLIENTE ARTICOLO AGENTE ZONA 1 123456 A1 222222 PISA 2 234567 A2 333333 CATANIA 3 345678 A3 444444 NULL DB -Algebra Relazionale
DB -Algebra Relazionale Ordini 1 Agenti ORDINE CLIENTE ARTICOLO AGENTE ZONA 1 123456 A1 222222 PISA 2 234567 A2 333333 CATANIA NULL 555555 ROMA DB -Algebra Relazionale
DB -Algebra Relazionale Unione Esterna Siano R[XY], S[YZ] due relazioni allora L’unione esterna R [ S si ottiene estendendo le due tabelle con le colonne dell’altro con valori nulli e si fa l’unione. DB -Algebra Relazionale
Esempio di Unione Esterna R U S DB -Algebra Relazionale
Algoritmo di Query Optimization DB -Algebra Relazionale
Espressione Algebrica di Query L’Algebra Relazionale può essere utilizzata come linguaggio per interrogare una base di dati. Infatti consideriamo l’esempio del database degli studenti costituito dalle tre tabelle Studenti, Esami, Corsi. DB -Algebra Relazionale
DB -Algebra Relazionale Esempio di Query Supponiamo che vogliamo trovare tutti i professori che hanno dato a Mario Rossi piu’ di 27. (1 e’ natural join) ProfessoreNome=‘Mario Rossi’& Voto>27 (Studenti 1 Esami 1 Corsi) DB -Algebra Relazionale
DB -Algebra Relazionale Query Optimization La stessa query PNome=‘Mario Rossi’& Voto>27 (Studenti 1 Esami 1 Corsi) può essere espressa come P (Nome=‘Mario Rossi’Studenti 1 ( Voto>27 Esami 1 Corsi)) Che risulta essere molto più efficiente! DB -Algebra Relazionale
Regole per la query optimization Anticipare l’applicazione delle proiezioni e delle restrizioni rispetto al prodotto (e quindi alle giunzioni), in modo da ridurre la dimensione delle tabelle a cui applicare il prodotto (e le giunzioni). Le seguenti regole possono essere utilmente utilizzate per l’ottimizzazione di espressioni: DB -Algebra Relazionale
Regole sulla restrizione Raggruppamento di restrizioni C(X) (C(Y)(E))=C(X)&C(Y)(E) Commutativita’ di e C(X)(Y(E))=Y(C(X)(E)) ,se XY; Y(C(X)(XY(E)))=Y(C(X)(E))se X Y. DB -Algebra Relazionale
Restrizione e Prodotto Anticipazione di rispetto a . C(X)(E F)= C(X)(E) F, se X attr(E). C(X)&C(Y)(E F)= C(X)(E) C(Y)(F), se X attr(E), Y attr(F). C(X)&C(Y)&C(Z)(E F)= C(Z)( C(X)(E) C(Y)(F)), se X attr(E), Y attr(F), Z attr(E) , Z attr(F) DB -Algebra Relazionale
Regole per la proiezione Raggruppamento di proiezioni. X(Y(E))= X(E) , se XY. Eliminazione di proiezioni superflue. X(E)=E , se X = attr.(E). Anticipazione della rispetto a . XY(E F)= X(E) Y(F) , se Xattr(E), Yattr.(F). DB -Algebra Relazionale
DB -Algebra Relazionale L’ALGORITMO Si applicano le seguenti tre regole (per anticipare la selezione) finché è possibile Si anticipa rispetto a usando la 2.a. Si raggruppano le restrizioni usando la 1. Si anticipa l’esecuzione di su usando la 3. DB -Algebra Relazionale
Anticipazione delle proiezioni Si eliminano le proiezioni superflue usando la 5. Si raggruppano le proiezioni mediante la regola 4. Si anticipa l’esecuzione delle proiezioni rispetto al prodotto usando ripetutamente la 2 (quando E è un prodotto, da destra verso sinistra) e la 6. DB -Algebra Relazionale
DB -Algebra Relazionale Esercitazioni? DB -Algebra Relazionale