Algebra Relazionale

Download Report

Transcript Algebra Relazionale

Query languages per Basi di
Dati Relazionali
 Algebra Relazionale:
basato sulla teoria degli insiemi
procedurale
usato per l’implementazione di linguaggi
reali (SQL)
 si presta a ottimizzazioni
Query languages per Basi di
Dati Relazionali
 Calcolo Relazionale:
basato sulla logica del 1^ ordine
dichiarativo
usato per definire la sintassi di linguaggi
reali (SQL)
 si può tradurre in algebra relazionale
Algebra Relazionale
 Insieme di operatori
Basati su concetti algebrici\insiemistici
Operatori che trasformano (una o più) relazioni
in altre relazioni
Manipolano ISTANZE di DB relazionali
Costituiscono un query-language
Algebra Relazionale
 L’algebra relazionale è un linguaggio
PROCEDURALE
 Concetto di base: gli operatori su insiemi sono
ammissibili sulle relazioni
Osservazioni
• Gli operatori insiemistici
 Sono ammissibili su relazioni
 Ma solo su relazioni con lo stesso schema!
 Operatori dell’algebra relazionale permettono:
di uniformare gli schemi, per poi applicare gli operatori
su insiemi
di selezionare sottoparti di tabelle
 di mettere in corrispondenza più tabelle
Ridenominazione
 Operatore per cambiare nome agli attributi
 R1(A1A2…Ak) R2(B1B2…Bk)
r B1…Bk  A1…Ak (R1)
L’operatore r Ridenominazione trasforma una istanza di R1 in una
istanza di R2
 R1 ed R2 devono essere definite
 Sugli stessi domini, ordinati nello stesso modo
 Con nomi diversi
 r cambia i nomi
 r può cambiare anche solo alcuni dei nomi
SELEZIONE
 Produce un sottoinsieme delle tuple
 Che mantengono tutti gli attributi
 Sintassi sc (r) = r’
 s selezione
 c condizione di selezione
 La soluzione è una nuova relazione tratta dalla
relazione data
 contenente tutte e sole le tuple che soddisfano c
Condizione di selezione
 C formula proposizionale
 Definita su attributi X di r
 C si costruisce su: (oltre a X)
 Operatori di confronto
=  > <  
 Costanti
 Operatori logici Λ V ¬
 C vale vero/ falso
Valori Nulli
 In algebra relazionale
s media > 25 (Studente) 
s media ≤ 25 (Studente) = ? Studente
 L’uguaglianza vale solo se Studente non contiene tuple
con media = null
Valori Nulli
 Qualunque operatore di confronto restituisce falso se
applicato a null
null  25? Falso
null > 25? Falso
 Soluzione:predicati IS NULL IS NOT NULL
s media > 25 V media IS NULL (Studente) 
s media  25 (Studente) = Studente
Proiezione
 Data R su X
 Dato Y  X
PY (r)={ t[Y], t  r}
P = proiezione
Y = attributi da conservare
 P elimina gli attributi di X - Y
 PY (r) contiene tutte le tuple di r?
solo se Y è superchiave per r
Join Naturale
 Definizione:
Date R1(X1) ed R2(X2)
r1 join r2 = {t su X1X2 :  t1  r1 , t2  r2
tali che t [X1]  r1 e t[X2]  r2 }
dove X1X2  X1  X2
 Se X1  X2  X1  X2    X1  X2= Y
allora join naturale combina tuple di r1 ed r2 con uguali valori su Y
Join Naturale
 Ossrvazioni:
Se X1  X2 =  allora
join naturale = prodotto cartesiano
 Se X1  X2 = X1  X2 (ossia X1 = X2)
join naturale = Intersezione fra r1 ed r2
Join
 Operatore binario
r1 Join r2
 Commutativo
r1 join r2 = r2 join r1
 Associativo
r1 join (r2 join r3) = (r1 join r2) join r3
 Quindi applicabile in sequenza
r1 join r2 join…join rn
joinni=1 ri
 Coinvolge nelle query un numero arbitrario di
relazioni
Join Naturale
 Fra r1 ed r2 con X1X2 e X1X2=Y
combina r1 ed r2 rispetto alle tuple con uguali valori su y
 Join vuoto
non  coppie t1  r1,t2  r2 tali che t1[y]=t2[y]
 Join completo
 tupla t1  r1 t2  r2: t1[y] = t2[y] e viceversa
 Join non completo: tuple dangling escluse dal risultato
Join Naturale
 Cardinalità del Join:
maxr1,r2 r1 join r2r1r2
 Se Y contiene una chiave per R2, allora
r1 join r2r1
 Se vincolo di integrità referenziale fra Z  Y e chiave K
di R2,
r1 join r2=r1
 Join non completo: tuple dangling escluse dal risultato
Theta Join
 r1 joinF r2  sF (r1 join r2)
nei linguaggi di query reali non è previsto il join naturale,
ma è obbligatorio porre una condizione su attributi comuni
 r1 joinU r2 EQUI-JOIN
con U  (A1 = A11)  (A2 = A21) …  (An = An1)
 Il join naturale è simulato
r1 join r2  r1 joinA=A’ rA’  A(r2)
se X1  X2=A
Equivalenza di espressioni
 Vi sono diversi modi per ottenere lo stesso
risultato perché talune espressioni diverse sono
equivalenti
 Equivalenza relativa allo schema:
per ogni istanza r di schema R
E1(r) = E2(r)
notazione: E1 R E2
 Equivalenza assoluta
per ogni R, E1 R E2
notazione: E1  E2
Trasformazione di equivalenza
 Atomizzazione delle selezioni
sF1F2(E)  sF1(sF2(E)) se E=n
 Anziché verificare n volte sia F1 che F2
 Verifica n volte F2 ed F1 per
sF2(E)E
 Idempotenza delle proiezione
PX(E)PX(PXY(E))
lascia al sistema la possibilità di effettuare le proiezioni in “passate”
successive.
Trasformazione di equivalenza
 Inglobamento della selezione nel join
sF(E1 joinc E2)  E1 joinFC E2
 Distributività selezione su unione
sF(E1  E2)  sF (E1)  sF (E2)
 Distributività selezione su differenza
sF(E1 - E2)  sF (E1) - sF (E2)
 Proprietà analoghe per proiezioni?
si PX(E1  E2)  PX(E1)  PX(E2)
no PX(E1 - E2)  PX(E1) - PX(E2)
 Altre proprietà della selezione
sF1V F2(R) = sF1(R)  sF2(R)
sF1V F2(R) = sF1(R) join sF2(R)
sF1V F2(R) = sF1(R) - sF2(R)
Equivalenza assoluta
 Permette di migliorare l’efficienza delle
query
 Come: riducendo le dimensioni dei
risultati intermedi
 Trasformazioni di equivalenza:
equivalenza assoluta
efficaci in pratica
riducono le dimensioni
o preparono una riduzione