Algebra relazionale 2 Accesso ai dati di un DB Aggiornamento del DB: funzione che, data un’istanza del DB, produce un’altra istanza del DB, sullo stesso schema Modifica, aggiunta, rimozione tuple Interrogazione a DB: funzione che, dato un DB, produce una relazione su un dato schema (non necessariamente uno degli schemi definiti nel DB) 3 Accesso ai dati di un DB Aggiornamento e interrogazione vengono effettuati usando specifici linguaggi Per esempio: algebra relazionale 4 Algebra relazionale Linguaggio procedurale di accesso a DB Si specificano operazioni complesse descrivendo il procedimento da usare per ottenere la soluzione Interrogazioni : espressioni complesse
33
Embed
3 algebra relazionale - di.unito.it · Algebra relazionale 2 Accesso ai dati di un DB Aggiornamento del DB: funzione che, data un’istanza del DB, produce un’altra istanza del
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Algebra relazionale
2
Accesso ai dati di un DB
Aggiornamento del DB: funzione che, data un’istanza del DB, produce un’altra istanza del DB, sullo stesso schema
� Modifica, aggiunta, rimozione tuple
Interrogazione a DB: funzione che, dato un DB, produce una relazione su un dato schema (non necessariamente uno degli schemi definiti nel DB)
3
Accesso ai dati di un DB
Aggiornamento e interrogazione vengono effettuati usando specifici linguaggi
� Per esempio: algebra relazionale
4
Algebra relazionale
Linguaggio procedurale di accesso a DB
� Si specificano operazioni complesse descrivendo il procedimento da usare per ottenere la soluzione
� Interrogazioni : espressioni complesse
5
Algebra relazionale
Algebra relazionale: basata su un insieme di operatori� Definiti su relazioni
Relazioni: insiemi di tuple omogenee, cioèdefinite sugli stessi attributi
Insiemi: ha senso usare operatori insiemistici
Insiemi di tuple omogenee: usare operatori insiemistici solo su relazioni definite sugli stessi attributi� Altrimenti, si ottengono insiemi di tuple disomogenee, che non rappresentano relazioni
7
Unione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X
r1∪r2: relazione su X che contiene tuple appartenenti a r1 oppure a r2 oppure a entrambe
8
Unione di relazioni
38Verdi9824
39Neri7432
56Neri9297
EtàCognomeMatricola
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
56Neri9297
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
Laureati Dirigenti
Laureati ∪ Dirigenti
9
Differenza di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X
r1-r2: relazione su X che contiene tuple appartenenti a r1 ma non a r2
10
Differenza di relazioni
38Verdi9824
39Neri7432
56Neri9297
EtàCognomeMatricola
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
37Rossi7274
EtàCognomeMatricola
Laureati Dirigenti
Laureati - Dirigenti
11
Intersezione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X
r1∩r2: relazione su X che contiene tuple appartenenti sia a r1 sia a r2
12
Intersezione di relazioni
38Verdi9824
39Neri7432
56Neri9297
EtàCognomeMatricola
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
38Verdi9824
39Neri7432
EtàCognomeMatricola
Laureati Dirigenti
Laureati ∩ Dirigenti
13
Operatori di manipolazione di relazioni
Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi)
Permettono di manipolare relazioni per creare nuove relazioni� Ridenominazione
� Selezione
� Proiezione
� Join
14
Ridenominazione di relazioni
Cambia il nome di un attributo di relazione lasciandone inalterata l’istanza (modifica solo intestazione di relazione)
Utile per applicare operatori insiemistici a relazioni con attributi di nome diverso
Sia r(X) lo schema di una relazione r definita sull’insieme X={A1,…,Ak}
… e sia Y un insieme di attributi Y={B1,…,Bk}
La ridenominazione ρB1,..,Bk←A1,…,Ak(r) contiene una tupla t’ per ogni tupla t in r, cosìdefinita:� t’ è una tupla su Y, e
� t’[Bi]=t[Ai] per 1≤i≤k
21
Ridenominazione di relazioni
Cambiano solo i nomi degli attributi, i valori rimangono inalterati
Di solito, si indicano nelle ridenominazione solo gli attributi ridenominati (quelli per cui Ai ≠ Bi)
ρGenitore←Padre(Paternità): l’attributo Figlio viene omesso
22
Ridenominazione di relazioni
Che cos’è Studenti ∪ ρMatricola←Numero(Docenti)?
56
32
Matricola
Rossi
Neri
CognomeStudenti
23
78
Numero
Bianchi
Neri
CognomeDocenti
23
Selezione
Data una relazione r su un insieme di attributi X, la selezione σF(r) produce una relazione sugli attributi X che contiene tuple di r che soddisfano la condizione di selezione F
A B C
σF(r)
Selezione secondo F
A B C
24
Selezione
F e’ una formula proposizionale: condizione di selezione formata da
� Operatori booleani: � ∧ (AND),
� ∨ (OR),
� ¬ (NOT)
25
Selezione
F e’ una formula proposizionale: condizione di selezione formata da� Operatori booleani
� Condizione atomiche: termini che possono contenere� Confronti fra attributi (per esempio, Stipendio>Tasse, dove Stipendio e Tasse sono attributi)
� Confronti fra attributi e costanti (per esempio, Età ≤ 60, dove Età è un attributo)
26
Selezione
1.900,0040MarcoRossi
2.250,0036NicoVerdi
1.500,0040LucaNeri
1.000,0025MarioRossi
StipendioEtàNomeCognomeImpiegati
2.250,0036NicoVerdi
StipendioEtàNomeCognome
σEtà>30∧Stipendio>2.000,00(Impiegati)
27
Selezione
1.900,0040MarcoRossi
2.250,0036NicoVerdi
1.500,0040LucaNeri
1.000,0025MarioRossi
StipendioEtàNomeCognomeImpiegati
Che cos’è σEtà>30(Impiegati)?
28
Selezione
1.900,0040MarcoRossi
2.250,0036NicoVerdi
1.500,0040LucaNeri
1.000,0025MarioRossi
StipendioEtàNomeCognomeImpiegati
Che cos’è
σCognome=“Rossi” ∨ (¬ Nome=“Nico”)(Impiegati) ?
29
Proiezione
Dati una relazione r su un insieme di attributi X e un sottoinsieme Y di X, la proiezione πY(r) è l’insieme di tuple su Y ottenute dalle tuple di r considerando solo i valori su Y
πY(r) = {t[Y] | t ∈ r}
A B C
πY(r)
Proiezione su Y
A B
30
Proiezione
Per esempio:� Impiegati(Cognome,Nome,Reparto,Capo)
� πCognome,Nome(Impiegati) ha attributi Cognome, Nome
Ricordiamo che le relazioni sono insiemi, quindi non contengono tuple ripetute:� Tuple uguali collassano in una sola
31
Proiezione
BaldiPersonaleMarcoRossi
BaldiPersonaleNicoVerdi
De RossiVenditeLucaNeri
De RossiVenditeMarioRossi
CapoRepartoNomeCognome
BaldiPersonale
De RossiVendite
CapoReparto
Impiegati
πReparto,Capo(Impiegati)
32
Proiezione
BaldiPersonaleMarcoRossi
BaldiPersonaleNicoVerdi
De RossiVenditeLucaNeri
De RossiVenditeMarioRossi
CapoRepartoNomeCognomeImpiegati
Che cos’è πCognome, Nome(Impiegati)?
33
Proiezione
BaldiPersonaleMarcoRossi
BaldiPersonaleNicoVerdi
De RossiVenditeLucaNeri
De RossiVenditeMarioRossi
CapoRepartoNomeCognomeImpiegati
Che cos’è πCapo(Impiegati)?
34
Tuple di una proiezione
Una proiezione πY(r) contiene al più tante tuple quante ne contiene r
Se Y è una superchiave di r, allora πY(r) contiene tante tuple quante r� Questo può accadere comunque anche se Y non èla chiave primaria (basta che le tuple su Y siano “casualmente” tutte diverse tra loro)
Viceversa: se πY(r) contiene tante tuple quante r, allora Y è una superchiave di r
35
Join
Operatore che permette di correlare dati contenuti in relazioni diverse confrontando i valori delle tuple (modello relazionale basato su valori)
Join Naturale
Theta-Join
36
Join Naturale
Permette di correlare dati contenuti in relazioni diverse confrontando attributi con lo stesso nome
Produce una relazione definita sull’unione di insiemi di attributi delle due relazioni su cui opera
Tuple del risultato: ottenute combinando le tuple dei due operandi con valore uguale su attributi comuni
37
Join Naturale
Date r1(X) e r2(Y), r1><r2 è una relazione su X∪Y:
r1><r2={t su X∪Y | t[X]∈r1 e t[Y]∈r2}
38
Join Naturale
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
De Rossi
Mori
Capo
Produzione
Vendite
Reparto
Rel1 Rel2
Rel1(Impiegato,Reparto) Rel2(Reparto,Capo)
X Y
39
Join Naturale
Produzione
Produzione
Vendite
Reparto
De RossiRossi
MoriNeri
MoriBianchi
CapoImpiegato
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
De Rossi
Mori
Capo
Produzione
Vendite
Reparto
Rel1 Rel2
Rel1 >< Rel2
40
Join Naturale
Se le relazioni da combinare sono definite sullo stesso insieme di attributi, r1(X), r2(X)
… r1><r2 = r1∩r2
� Cioè il join coincide con l’intersezione: combina le tuple con gli stessi valori di attributi su r1 e r2
41
Join Naturale
Produzione
Vendite
Reparto
De Rossi
Mori
Capo
MoriProduzione
De RossiVendite
Baldi
Capo
Acquisti
Reparto
TilliContabilità
De Rossi
Mori
Capo
Produzione
Vendite
Reparto
Rel1 Rel2
Rel1 >< Rel2
42
Join Naturale
Se le relazioni da combinare sono definite su insiemi di attributi disgiunti, r1(X), r2(Y) con X∩Y=∅… la condizione di corrispondenza tra tuple è sempre vera
… r1><r2=r1xr2 (prodotto cartesiano)
Combina tutte le tuple di r1 con tutte quelle di r2
43
Join Naturale
P123MoriMoriProduzione
R124BaldiBaldiAcquisti
Bianchi
Mori
Impiegato
R124
P123
Progetto
Mori
Baldi
Capo
Produzione
Acquisti
Reparto
MoriProduzione
Baldi
Capo
Acquisti
Reparto
R124
P123
Progetto
Mori
Baldi
Impiegato
Rel1 Rel2
Rel1 >< Rel2
44
Join Naturale
Numero degli attributi di r1><r2 ≤ somma dei numeri degli attributi di r1 e r2
Spesso il join viene fatto sulla chiave di una relazione:� Infrazioni(Codice,Data,Agent,Art,Prov,Numero) Auto(Prov,Numero,Proprietario,Indirizzo)
Spesso viene imposto il vincolo di integritàreferenziale tra attributi di join (per evitare che r1 faccia riferimento a valori inesistenti in r2)
45
Join Naturale
v. AceriBini Luca4E5432RM
v. TigliVerdi Piero1A2396RM
Luci Gino
Verdi Piero
Proprietario
v. Aceri
v. Tigli
Indirizzo
2F7643
2F7643
Numero
MI
RM
Prov
Auto
2F7643MI5345615/10/03630876
539856
987557
987554
143256
Codice
12/10/03
26/10/03
26/10/03
25/10/03
Data
2F7643RM34456
4E5432RM34456
MI
RM
Prov
2F7643
4E5432
Numero
44
44
Art
567
567
Agente
Infrazioni
46
Join Naturale
2F7643
2F7643
2F7643
4E5432
4E5432
Numero
Luci Gino
Luci Gino
Verdi Piero
Bini Luca
Bini Luca
Proprietario
v. Aceri
v. Aceri
v. Tigli
v. Aceri
v. Aceri
Indirizzo
MI5345615/10/03630876
539856
987557
987554
143256
Codice
12/10/03
26/10/03
26/10/03
25/10/03
Data
RM34456
RM34456
MI
RM
Prov
44
44
Art
567
567
Agente
Infrazioni >< Auto
• Tra Infrazioni e Auto esiste un vincolo di integrità referenziale• {Prov,Numero} è chiave di Auto• Quindi, ogni tupla di Infrazioni è combinata esattamente conuna tupla di Auto
47
Join Naturale
IsmaeleAbramo
IsaccoAbramo
AbeleAdamo
CainoAdamo
FiglioPadre
Paternità
IsmaeleAgar
IsaccoSara
AbeleEva
CainoEva
FiglioMadre
Maternità
Ismaele
Isacco
Abele
Caino
Figlio
Agar
Sara
Eva
Eva
Madre
Abramo
Abramo
Adamo
Adamo
Padre
Paternità >< Maternità
48
Join completi
Date r1(X) e r2(Y), r1><r2 è completo se e solo se, per ogni tupla t1 di r1 esiste tupla t in r1><r2 tale che t[X]=t1 e analogamente per r2
49
Join completi
Cardinalità di un insieme: il numero di elementi che appartengono all’insieme
� Cardinalità di A: scritto |A|
Per esempio: |{a,b,d}|=3, |∅|=0
50
Join completi
Cardinalità di join:
� Se r1><r2 è completo:
max(|r1|,|r2|) ≤ |r1><r2| ≤ |r1|x|r2|
51
Join completi
MoriP124Bianchi
BruniP124Rossi
BruniP124Neri
BruniP124Bianchi
P124
P124
Progetto
MoriRossi
MoriNeri
CapoImpiegato
P124Neri
P124Bianchi
P124
Progetto
Rossi
Impiegato
BruniP124
Mori
Capo
P124
Progetto
Rel1 Rel2
Rel1 >< Rel2
Un esempio di join con |r1|x|r2| tuple
52
Join incompleti
Join incompleti lasciano tuple senza corrispondenza, dette dangling tuples
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
Produzione
Produzione
Reparto
Mori
Mori
Capo
Bianchi
Neri
ImpiegatoRel1 >< Rel2
53
Join incompletiCaso limite (solo tuple dangling): se non ci sono tuple combinabili, il risultato del join è la relazione vuota(senza tuple)
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Acquisti
Reparto
Rel1 Rel2
Reparto CapoImpiegatoRel1 >< Rel2
54
Cardinalità di join
Date r1(X) e r2(Y):
0 ≤ |r1><r2| ≤ |r1|x|r2|
Se r1 ><r2 completo:
|r1><r2| ≥ max(|r1|,|r2|)
Ogni tupla di r1 viene combinata con almeno 1 tupla di r2 e viceversa
55
Cardinalità di join
Se X∩Y contiene una chiave per r2
|r1><r2| ≤ |r1|
Ogni tupla di r1 viene combinata con al più una tupla di r2
56
Cardinalità di join
Se X∩Y contiene una chiave per r2 e c’èun vincolo di integrità referenziale fra X∩Y in r1 e la chiave di r2
|r1><r2| = |r1|
Ogni tupla di r1 viene combinata con esattamente una tupla di r2
57
Join esterni
Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi comuni, si inseriscono dei valori NULL in assenza di controparti
Non tralasciano tuple di operandi nel risultato
58
Join esterni
Join esterno sinistro: estende solo le tuple del primo operando� Aggiunge tuple di r1 senza corrispettivo in r2
Join esterno destro:estende solo le tuple del secondo operando� Aggiunge tuple di r2 senza corrispettivo in r1
Join esterno completo: estende tuple di entrambi gli operandi� Bilaterale
59
Join esterni
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
MoriProduzioneNeri
MoriProduzioneBianchi
Vendite
Reparto
NULL
Capo
Rossi
ImpiegatoRel1 ><LEFT Rel2
60
Join esterni
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
MoriProduzioneBianchi
BruniAcquistiNULL
MoriProduzioneNeri
Reparto CapoImpiegatoRel1 ><RIGHT Rel2
61
Join esterni
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
MoriProduzioneBianchi
BruniAcquistiNULL
MoriProduzioneNeri
Vendite
Reparto
NULL
Capo
Rossi
ImpiegatoRel1 ><FULL Rel2
62
Theta-Join
Serve per fare Join su relazioni senza attributi omonimi
Ricordiamo che il Join naturale su insiemi di attributi disgiunti degenera nel prodottocartesiano delle relazioni
Il Theta-Join e’ un operatore derivato: si ottiene come prodotto cartesiano seguito dalla selezione delle tuple che verificano una formula proposizionale F tra valori di attributi
r1 ><F r2 = σF(r1 >< r2)
63
Theta-Join
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniVendite
BaldiAcquisti
Mori
Capo
Produzione
Divisione
Rel1 Rel2
Produzione
Produzione
Vendite
Reparto
Produzione
Produzione
Vendite
Divisione
MoriBianchi
MoriNeri
Bruni
Capo
Rossi
Impiegato
σReparto=Divisione(Rel1 >< Rel2)
64
Theta-Join ed Equi-Join
Theta-Join: r1 ><F r2 = σF(r1 >< r2)
La condizione di selezione F è una formula proposizionale come descritto per l’operatore di selezione
Se F è congiunzione di uguaglianze tra attributi di r1 e attributi di r2, il theta-join viene detto equi-join
Come applicare espressioni di algebra relazionale in presenza di tuple con valori nulli?
Per esempio: σEtà>30(Impiegati)� Quando nella relazione Impiegati non si conosce l’età di
alcune persone: le tuple 104 e 219 devono essere selezionate?
3.000NULLMarco Celli210
1.70044Nico Bini105
3.050NULLLuigi Neri104
1.75023Mario Bianchi103
2.00034Mario Rossi101
StipEtàNomeMatr
120
Algebra con valori nulli
Logica a 3 valori per il trattamento di valori veri, falsi, sconosciuti: V, F, U (unknown)
Un predicato assume valore U quando uno dei termini del confronto ha valore nullo
Tabelle di verità dei connettivi: AND, OR, NOT
FFFF
FUUU
FUVV
FUVAND
FUVF
UUVU
VVVV
FUVOR
VF
UU
FV
NOT
121
Algebra con valori nulli
Poiché ragionare su valori nulli è complesso, adottiamo un approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionale
Definiamo due nuove condizioni atomiche di selezione: dato un attributo A� A IS NULL: vera su tupla t se il valore di t su A ènullo; falsa se il valore è specificato
� A IS NOT NULL: vera su t se valore di t su A èspecificato, falsa altrimenti
122
Algebra con valori nulli
Interpretiamo le condizioni di selezione in modo restrittivo, escludendo dalla selezione le tuple con valore U, a meno che non sia esplicitamente incluso nella selezione
123
Algebra con valori nulli
Per esempio:
� σEtà>30(Impiegati) – le tuple con Età nullnon vengono selezionate (su di esse la condizione Età>30 assume valore U)
� σEtà>30 ∨ Età IS NULL(Impiegati) – si includono anche le tuple con Età sconosciuta (104, 210 in relazione Impiegati)
124
Viste
Relazioni derivate definite su relazioni di schema logico
� Viste materializzate (con tuple memorizzate in DB)
� Relazioni virtuali, o viste (memorizzate in DB mediante espressioni del linguaggio di interrogazione, senza memorizzazione di tuple)
125
Viste
DBMS offrono solo relazioni virtuali (no ridondanza dei dati)
Interrogazioni che utilizzano viste sono risolte sostituendo la definizione delle viste alle loro occorrenze
126
Viste
Per esempio:
� R1(A,B,C), R2(C,D,E), R3(E,G)
� Vista: R = σA>D(R1 >< R2)
� Interrogazione: σB=G(R >< R3) risolta così:
σB=G(σA>D(R1 >< R2) >< R3)
127
Viste
Viste utili per:� Permettere ad applicazioni di utilizzare relazioni che contengono solo le informazioni di interesse
� Se lo schema del DB viene ristrutturato, ricreare relazioni eliminate per evitare di modificare le applicazioni che le usavano� Per esempio: R(A,B,C) sostituita in DB da R1(A,B), R2(B,C), e definiamo vista R= R1><R2
128
Esercizi1. Considerare lo schema di base di dati contenente le relazioni:
Formulare in algebra relazionale le interrogazioni che trovino:
1) I titoli dei film nei quali Henry Fonda sia stato interprete;2) I titoli dei film per i quali il regista sia stato anche interprete;3) I titoli dei film in cui recitano attori italiani;4) I titoli di tutti i film in cui Robert Redford è attore specificando
che personaggio interpreta;5) I titoli dei film in cui gli attori siano tutti dello stesso sesso;6) Nome e cognome degli attori che hanno recitato insieme (in
coppia) in almeno un film e specificare il titolo del film.
129
Esercizi2. Considerare lo schema di base di dati contenente le relazioni:
Formulare in algebra relazionale le interrogazioni che trovino:
1) Gli esami superati dallo studente Pico Della Mirandola(supposto unico), con indicazione della denominazione del corso, del voto e del cognome del professore;
2) Nome e cognome degli studenti che hanno riportato in almeno un esame un voto pari a 30 dopo il 01/01/2006;
3) Nome e cognome dei professori che non hanno maiassegnato un voto maggiore di 28.