Corso di Basi di Dati Progettazione di Basi di Dati Home page del corso: difelice/dbsi
Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi
Transcript of Corso di Basi di Dati LAlgebra Relazionale Home page del corso: difelice/dbsi
Corso di Basi di Dati
L’Algebra RelazionaleHome page del corso:
http://www.cs.unibo.it/~difelice/dbsi/
Algebra Relazionale
Altri linguaggi DML di interrogazione:
SQL2/SQL3 (standard de facto, gia’ visto ..)
Calcolo relazionale (linguaggio dichiarativo)
Datalog (basato su Prolog)
L’algebra relazionale e’ un linguaggio (procedurale) di interrogazione per basi di dati relazionali.
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.
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.
Algebra Relazionale
Interrogazione SQL
Interrogazione linguaggio procedurale
Interrogazione ottimizzata
DB
Traduttore SQL Linguaggio Procedurale
Ottimizzatore di query
Esecuzione
INTERPRETE SQL DEL DBMS
Generata dall’utente/applicazione
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.
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!
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 Bianchi 14/06/1982
Michele Verdi 17/08/1983
CALCIATORI ALLENATORI
Algebra Relazionale
Nome Cognome Nascita
Giuseppe Rossi 10/03/19769
Roberto Bianchi 14/06/1982
Michele Verdi 17/08/1983
Giovanni Bianchi 10/06/1980
Nome Cognome Nascita
Roberto Bianchi 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
Nome Cognome Data
Giovanni Bianchi 10/06/1980
Roberto Bianchi 14/06/1982
Michele Verdi 17/08/1983
CALCIATORI ALLENATORI
Algebra Relazionale
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 rconsente 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. A1 A
2
… AMB1 B
2
… BM
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 Bianchi 14/06/1982
Michele Verdi 17/08/1983
CALCIATORI ALLENATORI
Algebra Relazionale
Nome Cognome Nascita
Giuseppe Rossi 10/03/19769
Roberto Bianchi 14/06/1982
Michele Verdi 17/08/1983
Giovanni Bianchi 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.
A1 A2 … A5M
…
…
…
A1 A2 … A5M
…
…
Relazione r
sF(r)
Relazione 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 e’ 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 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.
CALCIATORI
Algebra Relazionale
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 Polisportiva
Giovanni Bianchi 10/06/1980 29 Dinamo
Nome Cognome
Nascita Anni Societa’
Giuseppe Rossi 10/03/19769
32 Dinamo
CALCIATORI
Algebra Relazionale
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 Polisportiva
Giovanni Bianchi 10/06/1980 29 Dinamo
Nome Cognome
Nascita Anni Societa’
Giuseppe Rossi 10/03/19769
32 Dinamo
Giovanni Bianchi 10/06/1980 29 Dinamo
CALCIATORI
Algebra Relazionale
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 NULL
Giovanni Bianchi 10/06/1980 29 Dinamo
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).
OR T F U
T T T T
F T F U
U T U U
AND T F U
T T F U
F F F F
U U F U
NOT
T F
F T
U U
Si utilizzano gli operatori IS NULL e IS NOT NULL per verificare se un certo attributo ha valore uguale a NULL o meno.
CALCIATORI
Algebra Relazionale
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 Polisportiva
Giovanni Bianchi 10/06/1980 35 NULL
Nome Cognome
Nascita Anni Societa’
CALCIATORI
Algebra Relazionale
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 Polisportiva
Giovanni Bianchi 10/06/1980 35 NULL
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.
A1 A2 A3 … A5
…
…
…
A1 A5
…
…
Y=(A1,A5)
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?)
CALCIATORI
Algebra Relazionale
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 Polisportiva
Giovanni Bianchi 10/06/1980 27 Dinamo
Nome Cognome
Giuseppe Rossi
Roberto Bianchi
Michele Verdi
Giovanni Bianchi
Anni
32
33
27
Algebra Relazionale
E’ possibile scrivere espressioni complesse componendo gli operatori algebrici …
Nome Cognome Squadra
Giuseppe Rossi Dinamo
Roberto Bianchi Dinamo
Michele Verdi Polisportiva
CALCIATORI
Nome Cognome Squadra
Luciano Rossi Dinamo
Michele Rosati Polisportiva
PRESIDENTI
Nome Cognome Squadra
Luciano Rossi Dinamo
Giuseppe Rossi Dinamo
Roberto Bianchi Dinamo
Algebra Relazionale
E’ possibile scrivere espressioni complesse componendo gli operatori algebrici …
Nome Cognome Squadra
Giuseppe Rossi Dinamo
Roberto Bianchi Dinamo
Michele Verdi Polisportiva
CALCIATORI
Nome Cognome Squadra
Luciano Rossi Dinamo
Michele Rosati Polisportiva
PRESIDENTI
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.
Nome Cognome Squadra
Giuseppe Rossi Dinamo
Roberto Bianchi Dinamo
Michele Verdi Polisportiva
CALCIATORI
SQUADRE
Squadra Punti
Dinamo 12
Polisportiva 14
Nome Cognome Squadra Punti
Giuseppe Rossi Dinamo 12
Roberto Bianchi Dinamo 12
Michele Verdi Polisportiva
14
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 cardinalita’ del join e’ pari a quella dell’interserzione tra r1 ed r2 .
Codice Nome Ufficio
123 Rossi A
345 Bianchi A
167 Verdi B
IMPIEGATI
RESPONSABILI_UFFICIO
Codice
Nome Ufficio
123 Rossi A
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 cardinalita’ massima pari alla cardinalita’ di r1 (|r1|).Codice Nome Sede
123 Rossi Bologna
345 Bianchi Milano
167 Verdi Milano
IMPIEGATI
Sede Mansione
Bologna Sviluppo
Milano Testing
SEDI
Id Nome Sede Mansione
123 Rossi Bologna Sviluppo
345 Bianchi Milano Testing
167 Verdi Milano TestingCASO SPECIALE 2
Algebra RelazionaleSia 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|).
Id Nome CodiceRep
123 Rossi A3
345 Bianchi A3
167 Verdi B1
PAZIENTI CodiceRep
NrLetti Primario
A3 20 Alberti
B1 10 Gigli
REPARTI
Id Nome CodiceRep
NrLetti Primario
123 Rossi A3 20 Alberti
345 Bianchi A3 20 Alberti
167 Verdi B1 10 Gigli
CASO SPECIALE 3
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|).Id Nome Ufficio
123 Rossi A
345 Bianchi A
167 Verdi B
IMPIEGATI
Codice Telefono
A 20-21-216
C 20-21-218
UFFICI
Id Nome Ufficio Codice Telefono
123 Rossi A A 20-21-216
123 Rossi A C 20-21-218
345 Bianchi A A 20-21-216
345 Bianchi A C 20-21-218
167 Verdi B A 20-21-216
167 Verdi B C 20-21-218
CASO SPECIALE 4
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?
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 RETRIBUZIONEFROM IMPIEGATI, STIPENDIWHERE ((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, STIPENDIWHERE ((NOME=“MARIO”) AND (LIVELLO=LIVELLOQUALIFICA))
In algebra relazionale? Non si puo’ esprimere …
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.
Algebra Relazionale
Codice Partenza Arrivo
AZ123 Roma Parigi
AF345 Milano Boston
AF167 Parigi Londra
VOLI
Modello NrPosti Smoking
B747 250 NO
MD80 120 NO
AEREI
Codice Partenza
Arrivo Modello
NrPosti
Smoking
AZ123 Roma Parigi B747 250 NO
AF345 Milano Boston B747 250 NO
AF167 Parigi Londra B747 250 NO
Un esempio di theta-join con condizione di selezione (NrPosti>150).
Algebra Relazionale
Codice Partenza
Arrivo Modello
AZ123 Roma Parigi B747
AF345 Milano Boston MD80
AF167 Parigi Londra B737
VOLI
Modello NrPosti Smoking
B747 250 NO
MD80 120 NO
AEREI
Un esempio di theta-join con condizione di selezione (NrPosti>150).
???, Errore, il theta-join assume che le tue relazioni coinvolte
abbiano schemi distinti
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.
Algebra Relazionale
Esempio di equi-join …
Codice Partenza
Arrivo Modello
AZ123 Roma Parigi B747
AF345 Milano Boston MD80
AF167 Parigi Londra B737
VOLI
Codice NrPosti Smoking
B747 250 NO
MD80 120 NO
AEREI
Codice Partenza
Arrivo Modello
NrPosti
Smoking
AZ123 Roma Parigi B747 250 NO
AF345 Milano Boston MD80 120 NO
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
Algebra Relazionale
Nel join naturale, non tutte le tuple di una relazione contribuiscono al risultato finale …
Codice Nome Sede
123 Rossi Bologna
345 Bianchi Milano
167 Verdi Parma
189 Rosati Palermo
IMPIEGATI
Sede Mansione
Bologna Sviluppo
Milano Testing
SEDI
Id Nome Sede Mansione
123 Rossi Bologna Sviluppo
345 Bianchi Milano Testing
Queste tuple non appaiono nel risultato finale (dangling values)!!}
Algebra Relazionale
Possono esistere casi in cui si vorrebbero includere anche le dangling tuple nel risultato finale…
Codice Nome Cognome
CodiceMedico
123 Rossi Bologna MB124
345 Bianchi Milano VB34
167 Verdi Parma VB34
189 Rosati Palermo MR56
PAZIENTI
CodiceMedico
NomeMedico
CognomeMedico
MB124 Marco Bianchi
VB34 Valerio Bianchi
MEDICI_BOLOGNA
Vorrei includere nel risultato finale tutte le informazioni sui pazienti (e relativi medici) …
Algebra Relazionale
Codice Nome Cognome
CodiceMedico
123 Rossi Bologna MB124
345 Bianchi Milano VB34
167 Verdi Parma VB34
189 Rosati Palermo MR56
PAZIENTI
CodiceMedico
NomeMedico
CognomeMedico
MB124 Marco Bianchi
VB34 Valerio Bianchi
MEDICI_BOLOGNA
Codice
Nome Cognome
CodiceMedico
NomeMedico
CognomeMedico
123 Rossi Bologna MB124 Marco Bianchi
345 Bianchi
Milano VB34 Valerio
Bianchi
167 Verdi Parma VB34 Valerio
Bianchi
Questo valore non comparein MEDICI_BOLOGNA
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.
Algebra Relazionale
Esempio1: Left outer-join …
Codice Nome Sede
123 Rossi Bologna
345 Bianchi Milano
167 Verdi Parma
189 Rosati Palermo
IMPIEGATI
Sede Mansione
Bologna Sviluppo
Milano Testing
Venezia Direzione
SEDI
Codice Nome Sede Mansione
123 Rossi Bologna Sviluppo
345 Bianchi Milano Testing
167 Verdi Parma NULL
189 Rosati Palermo NULL
Algebra Relazionale
Esempio2: Right outer-join …
Codice Nome Sede
123 Rossi Bologna
345 Bianchi Milano
167 Verdi Parma
189 Rosati Palermo
IMPIEGATI
Sede Mansione
Bologna Sviluppo
Milano Testing
Venezia Direzione
SEDI
Codice Nome Sede Mansione
123 Rossi Bologna Sviluppo
345 Bianchi Milano Testing
NULL NULL Venezia Direzione
Algebra Relazionale
Esempio3: Full outer-join …
Codice Nome Sede
123 Rossi Bologna
345 Bianchi Milano
167 Verdi Parma
189 Rosati Palermo
IMPIEGATISede Mansion
e
Bologna Sviluppo
Milano Testing
Venezia Direzione
SEDI
Codice Nome Sede Mansione
123 Rossi Bologna Sviluppo
345 Bianchi Milano Testing
167 Verdi Parma NULL
189 Rosati Palermo NULL
NULL NULL Venezia Direzione
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
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
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?
Esempio di uguaglianza dipendente dallo schema!
Es. L’uguaglianza funziona sullo schema seguente:
Algebra RelazionaleSTUDENTI
Matricola
Nome Cognome
CdL
01212 Marco Rossi Fisica
02121 Michele Bianchi Informatica
43242 Giovanna
Verdi Chimica
56776 Daniele Rosati Fisica
ANAGRAFICA
Nome Cognome
CF Data
Michele Rossi MR233G 03/01/1990
Michele Marchi MM768H 06/11/1992
Giovanna
Verdi GV1111J 05/11/1993
Giovanna
Bianchini
GB3133J 23/06/1988
Nome CdL Data
Michele Informatica
03/01/1990
Michele Informatica
06/11/1992
Giovanna Chimica 05/11/1993
Giovanna 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)…
Commutativita della selezione:(F deve riferirsi solo ad attributi in Y)
Commutatitvita del join:
Associtativita’ 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 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)
Algebra Relazionale
Q. Come si dimostra se un’uguaglianza a livello di schema e’ valida?
Es. Dimostrare che:
1) Occorre dimostrare che:
2) Occorre dimostrare che:
SCHEMA DI DIMOSTRAZIONE
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.
Algebra Relazionale
Esempio di ottimizzazione di query
1. Atomizzazione delle selezioni.
2. Anticipazione della selezione rispetto al join
3. Inglobamento della selezione nel join
Algebra Relazionale
Esempio di ottimizzazione di query
4. Anticipazione della proiezione.
Q. E’ possibile ottimizzare ulteriormente l’interrogazione?