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
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 Osservazioni Gli operatori insiemistici
Ridenominazione Operatore per cambiare nome agli attributi R 1 (A 1 A 2 …A k ) R 2 (B 1 B 2 …B k ) B …Bk A1…Ak (R 1 ) L’operatore Ridenominazione trasforma una istanza di R 1 in una istanza di R 2 R 1 ed R 2 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 R 1 (X 1 ) ed R 2 (X 2 ) r 1 join r 2 = {t su X 1 X 2 : t 1 r 1, t 2 r 2 tali che t [X 1 ] r 1 e t[X 2 ] r 2 } dove X 1 X 2 X 1 X 2 Se X 1 X 2 X 1 X 2 X 1 X 2 = Y allora join naturale combina tuple di r 1 ed r 2 con uguali valori su Y
Join Naturale Ossrvazioni: Se X 1 X 2 = allora join naturale = prodotto cartesiano Se X 1 X 2 = X 1 X 2 (ossia X 1 = X 2 ) join naturale = Intersezione fra r 1 ed r 2
Join Operatore binario r 1 Join r 2 Commutativo r 1 join r 2 = r 2 join r 1 Associativo r 1 join (r 2 join r 3 ) = (r 1 join r 2 ) join r 3 Quindi applicabile in sequenza r 1 join r 2 join…join r n join n i=1 r i Coinvolge nelle query un numero arbitrario di relazioni
Join Naturale Fra r 1 ed r 2 con X 1 X 2 e X 1 X 2 =Y combina r 1 ed r 2 rispetto alle tuple con uguali valori su y Join vuoto non coppie t 1 r 1,t 2 r 2 tali che t 1 [y]=t 2 [y] Join completo tupla t 1 r 1 t 2 r 2 : t 1 [y] = t 2 [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 R 2, allora r 1 join r 2 r 1 Se vincolo di integrità referenziale fra Z Y e chiave K di R 2, r 1 join r 2 = r 1 Join non completo: tuple dangling escluse dal risultato
Theta Join r 1 join F r 2 F (r 1 join r 2 ) nei linguaggi di query reali non è previsto il join naturale, ma è obbligatorio porre una condizione su attributi comuni r 1 join U r 2 EQUI-JOIN con U (A 1 = A 1 1 ) (A 2 = A 2 1 ) … (A n = A n 1 ) Il join naturale è simulato r 1 join r 2 r 1 join A=A’ A’ A (r 2 ) se X 1 X 2 =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 E 1 (r) = E 2 (r) notazione: E 1 R E 2 Equivalenza assoluta per ogni R, E 1 R E 2 notazione: E 1 E 2
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 (E 1 join c E 2 ) E 1 join F C E 2 Distributività selezione su unione F (E 1 E 2 ) F (E 1 ) F (E 2 ) Distributività selezione su differenza F (E 1 - E 2 ) F (E 1 ) - F (E 2 ) Proprietà analoghe per proiezioni? si X (E 1 E 2 ) X (E 1 ) X (E 2 ) no X (E 1 - E 2 ) X (E 1 ) - X (E 2 ) 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