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 X1X2 e X1X2=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:
maxr1,r2 r1 join r2r1r2
Se Y contiene una chiave per R2, allora
r1 join r2r1
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
sF1F2(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 joinFC 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