L’Algebra Relazionale Corso di Basi di Dati L’Algebra Relazionale Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/
Algebra Relazionale L’algebra relazionale è un linguaggio (procedurale) di interrogazione per basi di dati relazionali. Altri linguaggi DML di interrogazione: SQL2/SQL3 (standard de facto, già visto ..) Calcolo relazionale (linguaggio dichiarativo) Datalog (basato su Prolog)
Algebra Relazionale All’interno di un DBMS, le query SQL sono controllate ed eseguite da un interprete SQL. L’interprete spesso traduce l’SQL in un altro linguaggio procedurale (~algebra relazionale) per motivi di: Facilità d’esecuzione è possibile scomporre query complesse in una sequenza di procedure da eseguire. Ottimizzazione è possibile riscrivere (automaticamente) le query procedurali in modo da consumare meno memoria o tempo di esecuzione.
Algebra Relazionale Il linguaggio dell’algebra relazionale è costituito da una serie di operatori (algebrici) che: si applicano ad una relazione (definizione di relazione nel modello relazionale). producono in output una relazione. sono componibili, ossia è possibile utilizzarli in cascata per creare interrogazioni complesse. Gli operatori possono essere unari o binari.
Algebra Relazionale Interrogazione SQL Generata dall’utente/ applicazione Interrogazione SQL Traduttore SQL Linguaggio Procedurale Interrogazione linguaggio procedurale Ottimizzatore di query Interrogazione ottimizzata Esecuzione DB INTERPRETE SQL DEL DBMS
Algebra Relazionale Il linguaggio dell’algebra relazionale è costituito da una serie di operatori (algebrici): Operatori su insiemi: unione, intersezione, differenza. Operatori su attributi: ridenominazione, selezione, proiezioni. Operatori intra-relazionali: join naturale, theta-join, equi-join, etc.
Algebra Relazionale Le relazioni sono insiemi è possibile definire operatori insiemistici su di esse: Unione di r1(X) ed r2(X): Intersezione di r1(X) ed r2(X): Differenza di r1(X) ed r2(X): Le relazioni r1 ed r2 devono avere lo stesso schema!
Algebra Relazionale Nome Cognome Nascita Giuseppe Rossi 10/03/19769 CALCIATORI ALLENATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Nome Cognome Nascita Giovanni Bianchi 10/06/1980 Roberto 14/06/1982 Michele Verdi 17/08/1983 Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Giovanni 10/06/1980 Nome Cognome Nascita Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983
Algebra Relazionale CALCIATORI ALLENATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Nome Cognome Data Giovanni Bianchi 10/06/1980 Roberto 14/06/1982 Michele Verdi 17/08/1983 Nome Cognome ??? Nome Cognome ??? Q. Cosa accade se le relazioni non hanno esattamente lo stesso schema, ma dispongono di attributi con nomi diversi?
Algebra Relazionale L’operatore di ridenominazione r consente di modificare i nomi degli attributi di una relazione. rB1,B2, … BM A1, A2, .. AM (r) SEMANTICA: Modifica lo schema della relazione, ridenominando gli attributi A1, A2, …AM in B1, B2, BM senza alterare i dati della relazione. B1 B2 … BM A1 A2 … AM
Algebra Relazionale Nome Cognome Nascita Giuseppe Rossi 10/03/19769 CALCIATORI ALLENATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Nome Cognome Data Giovanni Bianchi 10/06/1980 Roberto 14/06/1982 Michele Verdi 17/08/1983 Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Giovanni 10/06/1980 Nome Cognome Nascita Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983
Algebra Relazionale L’operatore di selezione sF(r) consente di selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F. Relazione r Relazione r’ A1 A2 … A5M A1 A2 … A5M sF(r) Insieme delle righe di r che soddisfano la condizione F
Algebra Relazionale L’operatore di selezione sF(r) consente di selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F. La condizione F è definita come insieme di predicati connessi da operatori logici. F= P1 Op P2 Op … PN Op e’ un operatore booleano (AND, OR, NOT)
Algebra Relazionale La condizione F e’ definita come insieme di predicati connessi da operatori logici. F= P1 Op P2 Op … PN Ogni predicato è del tipo AqB oppure Aqc, dove: q e’ un operatore di confronto (<,>,=,<>,<=,>=). A e B sono attributi di r, su cui ha senso l’operatore contiene una valore compatibile con il dominio di A.
Algebra Relazionale Nome Cognome Nascita Anni Societa’ Giuseppe Rossi CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Giovanni Bianchi 10/06/1980 29 Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo
Algebra Relazionale Nome Cognome Nascita Anni Societa’ Giuseppe Rossi CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Giovanni Bianchi 10/06/1980 29 Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Giovanni Bianchi 10/06/1980 29
Algebra Relazionale Q. Cosa accade in presenza di valori nulli? Nome CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 NULL Polisportiva Michele Verdi 17/08/1983 27 Giovanni Bianchi 10/06/1980 29 Q. Cosa accade in presenza di valori nulli?
Algebra Relazionale A. Come in SQL, si utilizza una logica a 3 valori: True (T), False (F), Unknown (U). NOT T F U AND T F U OR T F U Si utilizzano gli operatori IS NULL e IS NOT NULL per verificare se un certo attributo ha valore uguale a NULL o meno.
Algebra Relazionale Nome Cognome Nascita Anni Societa’ Giuseppe Rossi CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 NULL Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Giovanni 10/06/1980 35 Nome Cognome Nascita Anni Societa’
Algebra Relazionale Nome Cognome Nascita Anni Societa’ Giuseppe Rossi CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 NULL Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Giovanni 10/06/1980 35 Nome Cognome Nascita Anni Societa’ Giovanni Bianchi 10/06/1980 35 NULL
Algebra Relazionale L’operatore di proiezione pY(r) consente di selezionare un sottoinsieme degli attributi di r. Y=(A1,A5) A1 A2 A3 … A5 A1 A5 …
Algebra Relazionale L’operatore di proiezione pY(r) consente di selezionare un sottoinsieme degli attributi di r. Qual è la cardinalità di pY(r)? Nel caso generale, |pY(r)| <= |r| Se Y è superchiave di R, allora |pY(r)|= |r| Q. Vale anche il viceversa? (Se |pY(r)|= |r| allora Y è una superchiave di R?)
Algebra Relazionale Nome Cognome Nascita Anni Societa’ Giuseppe Rossi CALCIATORI Nome Cognome Nascita Anni Societa’ Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Giovanni 10/06/1980 Nome Cognome Giuseppe Rossi Roberto Bianchi Michele Verdi Giovanni Anni 32 33 27
Algebra Relazionale E’ possibile scrivere espressioni complesse componendo gli operatori algebrici … PRESIDENTI CALCIATORI Nome Cognome Squadra Giuseppe Rossi Dinamo Roberto Bianchi Michele Verdi Polisportiva Nome Cognome Squadra Luciano Rossi Dinamo Michele Rosati Polisportiva Nome Cognome Squadra Luciano Rossi Dinamo Giuseppe Roberto Bianchi
Algebra Relazionale E’ possibile scrivere espressioni complesse componendo gli operatori algebrici … PRESIDENTI CALCIATORI Nome Cognome Squadra Giuseppe Rossi Dinamo Roberto Bianchi Michele Verdi Polisportiva Nome Cognome Squadra Luciano Rossi Dinamo Michele Rosati Polisportiva Cognome Rossi Bianchi
Algebra Relazionale L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni. CALCIATORI Nome Cognome Squadra Giuseppe Rossi Dinamo Roberto Bianchi Michele Verdi Polisportiva SQUADRE Squadra Punti Dinamo 12 Polisportiva 14 Nome Cognome Squadra Punti Giuseppe Rossi Dinamo 12 Roberto Bianchi Michele Verdi Polisportiva 14
La cardinalita’ del join e’ compresa tra 0 e |r1|*|r2|. Algebra Relazionale L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni. Data una relazione r1 su attributi X1, ed una relazione r2 su attributi X2: La cardinalita’ del join e’ compresa tra 0 e |r1|*|r2|.
Algebra Relazionale Se le due relazioni r1 ed r2 hanno lo stesso schema la cardinalità del join è pari a quella dell’interserzione tra r1 ed r2 . IMPIEGATI Codice Nome Ufficio 123 Rossi A 345 Bianchi 167 Verdi B Codice Nome Ufficio 123 Rossi A RESPONSABILI_UFFICIO Codice Nome Ufficio 123 Rossi A 345 Michele C CASO SPECIALE 1
Algebra Relazionale Sia X l’attributo in comune tra X1 ed X2. Se X contiene una chiave di r2 il join ha cardinalità massima pari alla cardinalità di r1 (|r1|). SEDI IMPIEGATI Sede Mansione Bologna Sviluppo Milano Testing Codice Nome Sede 123 Rossi Bologna 345 Bianchi Milano 167 Verdi Id Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing 167 Verdi CASO SPECIALE 2
Algebra Relazionale Sia X l’attributo in comune tra X1 ed X2. Se esiste un vincolo di integrità referenziale tra l’attributo X in r1 e la relazione r2 il join ha cardinalità pari alla cardinalità di r1 (|r1|). CASO SPECIALE 3 REPARTI PAZIENTI CodiceRep NrLetti Primario A3 20 Alberti B1 10 Gigli Id Nome CodiceRep 123 Rossi A3 345 Bianchi 167 Verdi B1 Id Nome Codice Rep NrLetti Primario 123 Rossi A3 20 Alberti 345 Bianchi 167 Verdi B1 10 Gigli
Algebra Relazionale Se le due relazioni r1 ed r2 non hanno attributi in comune la cardinalita’ del join è pari a quella del prodotto cartesiano tra r1 ed r2 (|r1| *|r2|). IMPIEGATI CASO SPECIALE 4 Id Nome Ufficio 123 Rossi A 345 Bianchi 167 Verdi B Id Nome Ufficio Codice Telefono 123 Rossi A 20-21-216 C 20-21-218 345 Bianchi 167 Verdi B UFFICI Codice Telefono A 20-21-216 C 20-21-218
Algebra Relazionale Il join naturale dispone di alcune proprietà algebriche interessanti: Il join è commutativo: Il join è associativo: Nel caso di join n-ari: Q. Dimostrazione?
Algebra Relazionale E’ possibile stabilire una corrispondenza tra query SQL ed espressioni in algebra relazionale… Schema generale (tralasciando le ridenominazioni) SELECT A1, A2, … An FROM T1, T2, … Tm WHERE Condizione
Algebra Relazionale Dato il seguente schema: IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) determinare la retribuzione degli impiegati che si chiamano “Mario”. SELECT RETRIBUZIONE FROM IMPIEGATI, STIPENDI WHERE ((NOME=“MARIO”) AND (LIVELLO=LIVELLOQUALIFICA))
Algebra Relazionale Dato il seguente schema: IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) determinare la retribuzione MEDIA degli impiegati che si chiamano “Mario”. SELECT AVG(RETRIBUZIONE) FROM IMPIEGATI, STIPENDI WHERE ((NOME=“MARIO”) AND (LIVELLO=LIVELLOQUALIFICA)) In algebra relazionale? Non si può esprimere …
Algebra Relazionale Il theta-join è un operatore derivato, espresso come un join naturale seguito da un operatore di selezione. Theta-join: F è una condizione utilizzabile in una selezione. r1 ed r2 devono avere schemi diversi, ossia non devono avere attributi in comune.
Algebra Relazionale Un esempio di theta-join con condizione di selezione (NrPosti>150). VOLI AEREI Codice Partenza Arrivo AZ123 Roma Parigi AF345 Milano Boston AF167 Londra Modello NrPosti Smoking B747 250 NO MD80 120 Codice Partenza Arrivo Modello NrPosti Smoking AZ123 Roma Parigi B747 250 NO AF345 Milano Boston AF167 Londra
Algebra Relazionale L’ equi-join è un theta-join, in cui la condizione di selezione è una congiunzione di atomi di uguaglianza. Equi-join: F è una congiunzione di atomi. Ogni atomo è un’uguaglianza, tra due attributi (A,B) oppure tra un attributo ed una costante (d) nel suo dominio.
Algebra Relazionale Esempio di equi-join … Codice Partenza Arrivo VOLI AEREI Codice Partenza Arrivo Modello AZ123 Roma Parigi B747 AF345 Milano Boston MD80 AF167 Londra B737 Codice NrPosti Smoking B747 250 NO MD80 120 Codice Partenza Arrivo Modello NrPosti Smoking AZ123 Roma Parigi B747 250 NO AF345 Milano Boston MD80 120
Algebra Relazionale Il join naturale di tue relazioni r1 ed r2 può essere espresso mediante gli operatori di selezione, equi-join e ridenominazione. Es. date 2 relazioni: r1(ABC), r2(BCD) Step1: Ridenominazione Step2: Equi-join Step3: Proiezione
Algebra Relazionale Come in SQL, è possibile definire delle viste, sotto forma di interrogazioni dell’algebra relazionale cui si assegna un nome. Le viste possono essere usate in altre interrogazioni, per semplificarne la scrittura. Esempio di vista con nome IMPIEGATI
Algebra Relazionale L’algebra relazionale consente di creare interrogazioni equivalenti tra loro. L’equivalenza puo’ essere: Dipendente dallo schema Assoluta (per ogni schema) Se E1=E2 per ogni istanza r dello schema R
Algebra Relazionale Esempio di uguaglianza dipendente dallo schema! Es. L’uguaglianza funziona sullo schema seguente: R1=VOLI(Codice, AeroportoArrivo, OraArrivo, OraPartenza, Vettore) R2=AEREI(Vettore, NumPasseggeri) … Ma che accade se le due relazioni coinvolte hanno altri attributi in comune oltre a quelli che compaiono in A?
Algebra Relazionale Matricola Nome Cognome CdL 01212 Marco Rossi STUDENTI ANAGRAFICA Matricola Nome Cognome CdL 01212 Marco Rossi Fisica 02121 Michele Bianchi Informatica 43242 Giovanna Verdi Chimica 56776 Daniele Rosati Nome Cognome CF Data Michele Rossi MR233G 03/01/1990 Marchi MM768H 06/11/1992 Giovanna Verdi GV1111J 05/11/1993 Bianchini GB3133J 23/06/1988 Nome CdL Data Michele Informatica 03/01/1990 06/11/1992 Giovanna Chimica 05/11/1993 Fisica 23/06/1988 Nome CdL Data Giovanna Chimica 05/11/1993
Algebra Relazionale Uguaglianze a livello di schema … Atomizzazione delle selezioni: Idempotenza delle proiezioni: Selezione anticipata: (F fa riferimento solo ad attributi di E2) Inglobamento di una selezione:
Algebra Relazionale Uguaglianze a livello di schema (continua)… Commutatività della selezione: (F deve riferirsi solo ad attributi in Y) Commutatività del join: Associtatività del join:
Algebra Relazionale Uguaglianze a livello di schema (continua) … Proiezione anticipata: (E1 ed E2 definite su X1 ed X2. Y2 deve contenere l’intersezione di X1 ed X2.) Proprieta’ distributive della selezione e proiezione:
Algebra Relazionale Q. Come si dimostra se un’uguaglianza a livello di schema è valida? Verificare l’opposto è facile Basta trovare un esempio (schema/istanza) su cui l’uguaglianza non vale! Se non ci sono assunzioni sulla struttura di E1, E2, ed A, l’uguaglianza sopra è FALSA CONTROESEMPIO: E1=IMPIEGATI(Codice, Stipendio, Sede) E2=SEDI(Citta, Mansione) A=Stipendio F: (Sede=Citta)
Algebra Relazionale Q. Come si dimostra se un’uguaglianza a livello di schema è valida? Es. Dimostrare che: Occorre dimostrare che: SCHEMA DI DIMOSTRAZIONE
Esempio di ottimizzazione di query Algebra Relazionale Esempio di ottimizzazione di query Dato il seguenti schema: VOLI(Codice, CittaPartenza, CittaArrivo, Vettore) AEREI(Modello, NrPosti, Smoking) Q. Determinare i modelli degli aerei in partenza da Milano con meno di 100 passeggeri.
Esempio di ottimizzazione di query Algebra Relazionale Esempio di ottimizzazione di query 1. Atomizzazione delle selezioni. 2. Anticipazione della selezione rispetto al join 3. Inglobamento della selezione nel join
Esempio di ottimizzazione di query Algebra Relazionale Esempio di ottimizzazione di query 4. Anticipazione della proiezione. Q. E’ possibile ottimizzare ulteriormente l’interrogazione?