Sei sulla pagina 1di 21

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)
B…Bk  A1…Ak (R1)
L’operatore  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
  cambia i nomi
 può cambiare anche solo alcuni dei nomi
SELEZIONE
 Produce un sottoinsieme delle tuple
 Che mantengono tutti gli attributi

 Sintassi c (r) = r’
 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
media > 25 (Studente) 
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


 media > 25 V media IS NULL (Studente) 
media  25 (Studente) = Studente
Proiezione
 Data R su X
 Dato Y  X
Y (r)={ t[Y], t  r}
proiezione
Y = attributi da conservare
 elimina gli attributi di X - Y
 Y (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  F (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’ A’  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
F1F2(E)  F1(F2(E)) se E=n

 Anziché verificare n volte sia F1 che F2


 Verifica n volte F2 ed F1 per
F2(E)E
 Idempotenza delle proiezione
X(E)X(XY(E))
lascia al sistema la possibilità di effettuare le proiezioni in “passate”
successive.
Trasformazione di equivalenza
 Inglobamento della selezione nel join
F(E1 joinc E2)  E1 joinFC E2
 Distributività selezione su unione
F(E1  E2)  F (E1)  F (E2)
 Distributività selezione su differenza
F(E1 - E2)  F (E1) - F (E2)
 Proprietà analoghe per proiezioni?
si X(E1  E2)  X(E1)  X(E2)
no X(E1 - E2)  X(E1) - X(E2)
 Altre proprietà della selezione
F1V F2(R) = F1(R)  F2(R)
F1V F2(R) = F1(R) join F2(R)
F1V F2(R) = F1(R) - F2(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

Potrebbero piacerti anche