Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
L’Algebra Relazionale
Corso di Basi di Dati L’Algebra Relazionale Home page del corso:
2
Algebra Relazionale L’algebra relazionale e’ un linguaggio (procedurale) di interrogazione per basi di dati relazionali. Altri linguaggi DML di interrogazione: SQL2/SQL3 (standard de facto, gia’ visto ..) Calcolo relazionale (linguaggio dichiarativo) Datalog (basato su Prolog)
3
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: Facilita’ d’esecuzione e’ possibile scomporre query complesse in una sequenza di procedure da eseguire. Ottimizzazione e’ possibile riscrivere (automaticamente) le query procedurali in modo da consumare meno memoria o tempo di esecuzione.
4
Algebra Relazionale Il linguaggio dell’algebra relazionale e’ 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 e’ possibile utilizzarli in cascata per creare interrogazioni complesse. Gli operatori possono essere unari o binari.
5
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
6
Algebra Relazionale Il linguaggio dell’algebra relazionale e’ 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.
7
Algebra Relazionale Le relazioni sono insiemi e’ 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!
8
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
9
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?
10
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
11
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
12
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
13
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 e’ definita come insieme di predicati connessi da operatori logici. F= P1 Op P2 Op … PN Op e’ un operatore booleano (AND, OR, NOT)
14
Algebra Relazionale La condizione F e’ definita come insieme di predicati connessi da operatori logici. F= P1 Op P2 Op … PN Ogni predicato e’ 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.
15
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
16
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
17
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?
18
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.
19
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’
20
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
21
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 …
22
Algebra Relazionale L’operatore di proiezione pY(r) consente di selezionare un sottoinsieme degli attributi di r. Qual e’ la cardinalita’ di pY(r)? Nel caso generale, |pY(r)| <= |r| Se Y e’ superchiave di R, allora |pY(r)|= |r| Q. Vale anche il viceversa? (Se |pY(r)|= |r| allora Y e’ una superchiave di R?)
23
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
24
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
25
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
26
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
27
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|.
28
Algebra Relazionale Se le due relazioni r1 ed r2 hanno lo stesso schema la cardinalita’ del join e’ 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
29
Algebra Relazionale Sia X l’attributo in comune tra X1 ed X2. Se X contiene una chiave di r2 il join ha cardinalita’ massima pari alla cardinalita’ 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
30
Algebra Relazionale Sia X l’attributo in comune tra X1 ed X2. Se esiste un vincolo di integrita’ referenziale tra l’attributo X in r1 e la relazione r2 il join ha cardinalita’ pari alla cardinalita’ 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
31
Algebra Relazionale Se le due relazioni r1 ed r2 non hanno attributi in comune la cardinalita’ del join e’ 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 C 345 Bianchi 167 Verdi B UFFICI Codice Telefono A C
32
Algebra Relazionale Il join naturale dispone di alcune proprieta’ algebriche interessanti: Il join e’ commutativo: Il join e’ associativo: Nel caso di join n-ari: Q. Dimostrazione?
33
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
34
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))
35
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 puo’ esprimere …
36
Algebra Relazionale Il theta-join e’ un operatore derivato, espresso come un join naturale seguito da un operatore di selezione. Theta-join: F e’ una condizione utilizzabile in una selezione. r1 ed r2 devono avere schemi diversi, ossia non devono avere attributi in comune.
37
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
38
Algebra Relazionale Un esempio di theta-join con condizione di selezione (NrPosti>150). VOLI AEREI Codice Partenza Arrivo Modello AZ123 Roma Parigi B747 AF345 Milano Boston MD80 AF167 Londra B737 Modello NrPosti Smoking B747 250 NO MD80 120 ???, Errore, il theta-join assume che le tue relazioni coinvolte abbiano schemi distinti
39
Algebra Relazionale L’ equi-join e’ un theta-join, in cui la condizione di selezione e’ una congiunzione di atomi di uguaglianza. Equi-join: F e’ una congiunzione di atomi. Ogni atomo e’ un’uguaglianza, tra due attributi (A,B) oppure tra un attributo ed una costante (d) nel suo dominio.
40
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
41
Algebra Relazionale Il join naturale di tue relazioni r1 ed r2 puo’ 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
42
Algebra Relazionale Nel join naturale, non tutte le tuple di una relazione contribuiscono al risultato finale … IMPIEGATI SEDI Codice Nome Sede 123 Rossi Bologna 345 Bianchi Milano 167 Verdi Parma 189 Rosati Palermo Sede Mansione Bologna Sviluppo Milano Testing } Queste tuple non appaiono nel risultato finale (dangling values)!! Id Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing
43
Algebra Relazionale Possono esistere casi in cui si vorrebbero includere anche le dangling tuple nel risultato finale… PAZIENTI MEDICI_BOLOGNA Codice Nome Cognome Medico 123 Rossi Bologna MB124 345 Bianchi Milano VB34 167 Verdi Parma 189 Rosati Palermo MR56 Codice Medico Nome Cognome MB124 Marco Bianchi VB34 Valerio Vorrei includere nel risultato finale tutte le informazioni sui pazienti (e relativi medici) …
44
Algebra Relazionale Questo valore non compare in MEDICI_BOLOGNA Codice
PAZIENTI MEDICI_BOLOGNA Codice Nome Cognome Medico 123 Rossi Bologna MB124 345 Bianchi Milano VB34 167 Verdi Parma 189 Rosati Palermo MR56 Codice Medico Nome Cognome MB124 Marco Bianchi VB34 Valerio Questo valore non compare in MEDICI_BOLOGNA Codice Nome Cognome Medico 123 Rossi Bologna MB124 Marco Bianchi 345 Milano VB34 Valerio 167 Verdi Parma
45
Algebra Relazionale L’outer-join consente di far apparire le tuple dangling nel risultato finale, completando le informazioni mancanti con valori NULL. Tre varianti dell’outer-join: Left join completamento dell’operando sx. Right join completamento dell’operando dx. Full Join completamento di entrambi gli operandi.
46
Algebra Relazionale Esempio1: Left outer-join … Codice Nome Sede 123
IMPIEGATI SEDI Codice Nome Sede 123 Rossi Bologna 345 Bianchi Milano 167 Verdi Parma 189 Rosati Palermo Sede Mansione Bologna Sviluppo Milano Testing Venezia Direzione Codice Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing 167 Verdi Parma NULL 189 Rosati Palermo
47
Algebra Relazionale Esempio2: Right outer-join … Codice Nome Sede 123
IMPIEGATI SEDI Codice Nome Sede 123 Rossi Bologna 345 Bianchi Milano 167 Verdi Parma 189 Rosati Palermo Sede Mansione Bologna Sviluppo Milano Testing Venezia Direzione Codice Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing NULL Venezia Direzione
48
Algebra Relazionale Esempio3: Full outer-join … Sede Mansione Bologna
SEDI IMPIEGATI Sede Mansione Bologna Sviluppo Milano Testing Venezia Direzione Codice Nome Sede 123 Rossi Bologna 345 Bianchi Milano 167 Verdi Parma 189 Rosati Palermo Codice Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing 167 Verdi Parma NULL 189 Rosati Palermo Venezia Direzione
49
Algebra Relazionale Come in SQL, e’ 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
50
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
51
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?
52
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
53
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:
54
Algebra Relazionale Uguaglianze a livello di schema (continua)…
Commutativita della selezione: (F deve riferirsi solo ad attributi in Y) Commutatitvita del join: Associtativita’ del join:
55
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:
56
Algebra Relazionale Q. Come si dimostra se un’uguaglianza a livello di schema e’ valida? Verificare l’opposto e’ 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 e’ FALSA CONTROESEMPIO: E1=IMPIEGATI(Codice, Stipendio, Sede) E2=SEDI(Citta, Mansione) A=Stipendio F: (Sede=Citta)
57
Algebra Relazionale Q. Come si dimostra se un’uguaglianza a livello di schema e’ valida? Es. Dimostrare che: Occorre dimostrare che: SCHEMA DI DIMOSTRAZIONE
58
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.
59
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
60
Esempio di ottimizzazione di query
Algebra Relazionale Esempio di ottimizzazione di query 4. Anticipazione della proiezione. Q. E’ possibile ottimizzare ulteriormente l’interrogazione?
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.