algebra relazionale. accesso ai dati di un db aggiornamento di db: funzione che, data istanza di db,...
TRANSCRIPT
![Page 1: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/1.jpg)
Algebra relazionale
![Page 2: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/2.jpg)
Accesso ai dati di un DB
Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di 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)
![Page 3: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/3.jpg)
Accesso ai dati di un DB
Aggiornamento e interrogazione vengono effettuati usando specifici linguaggi Per esempio: algebra relazionale
![Page 4: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/4.jpg)
Algebra relazionale
Linguaggio procedurale di accesso a DB Si specificano operazioni complesse
descrivendo procedimento da usare per ottenere soluzione
Interrogazioni: espressioni complesse
![Page 5: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/5.jpg)
Algebra relazionale
Algebra relazionale: basata su insieme di operatori Definiti su relazioni Producono relazioni come risultati
Operatori Insiemistici: unione, intersezione, differenza Specifici: ridenominazione, selezione,
proiezione, join
![Page 6: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/6.jpg)
Operatori insiemistici
Relazioni: insiemi di tuple omogenee, cioè definite sigli stessi attributiInsiemi: ha senso usare operatori insiemisticiInsiemi di tuple omogenee: usare operatori insiemistici solo su relazioni definite sugli stessi attributi Altrimenti, si ottengono insiemi di tuple
disomogenee, che non rappresentano relazioni
![Page 7: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/7.jpg)
Unione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi Xr1r2: relazione su X che contiene tuple appartenenti a r1 oppure a r2 oppure a entrambe
![Page 8: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/8.jpg)
Unione di relazioni
Matricola
Cognome
Età
9297 Neri 56
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9297 Neri 56
9824 Verdi 38
Laureati Dirigenti
Laureati Dirigenti
![Page 9: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/9.jpg)
Differenza di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi Xr1-r2: relazione su X che contiene tuple appartenenti a r1 ma non a r2
![Page 10: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/10.jpg)
Differenza di relazioni
Matricola
Cognome
Età
9297 Neri 56
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
Laureati Dirigenti
Laureati - Dirigenti
![Page 11: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/11.jpg)
Intersezione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi Xr1r2: relazione su X che contiene tuple appartenenti sia a r1 che a r2
![Page 12: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/12.jpg)
Intersezione di relazioni
Matricola
Cognome
Età
9297 Neri 56
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7432 Neri 39
9824 Verdi 38
Laureati Dirigenti
Laureati Dirigenti
![Page 13: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/13.jpg)
Operatori di manipolazione di relazioni
Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi)Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join
![Page 14: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/14.jpg)
Operatori di manipolazione di relazioni
Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi)Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join
![Page 15: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/15.jpg)
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
![Page 16: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/16.jpg)
Ridenominazione di relazioni
Per esempio:
Padre Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Madre Figlio
Eva Caino
Eva Set
Sara Isacco
Agar Ismaele
Paternità Maternità
Paternità Maternità ?
![Page 17: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/17.jpg)
Ridenominazione di relazioni
Una ridenominazione:
Padre Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Genitore Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Paternità GenitorePadre(Paternità)
![Page 18: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/18.jpg)
Ridenominazione di relazioni
Una ridenominazione:
Padre Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Genitore Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Paternità GenitorePadre(Paternità)GenitorePadre(Paternità)
![Page 19: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/19.jpg)
Ridenominazione di relazioni
Una ridenominazione:
Padre Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Genitore Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Paternità GenitorePadre(Paternità)GenitorePadre(Paternità)
![Page 20: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/20.jpg)
Ridenominazione di relazioni
Un’altra ridenominazione:
Madre Figlio
Eva Caino
Eva Set
Sara Isacco
Agar Ismaele
Genitore Figlio
Eva Caino
Eva Set
Sara Isacco
Agar Ismaele
Maternità GenitoreMadre(Maternità)
![Page 21: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/21.jpg)
Ridenominazione di relazioni
Genitore Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Eva Caino
Eva Set
Sara Isacco
Agar Ismaele
GenitorePadre(Paternità) GenitoreMadre(Maternità)
Corretta applicazionedi unionerelazioni
![Page 22: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/22.jpg)
Ridenominazione di relazioni
Cognome
Agenzia
Stipendio
Rossi Roma 45
Neri Milano 53
Imp
![Page 23: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/23.jpg)
Ridenominazione di relazioni
Cognome
Agenzia
Stipendio
Rossi Roma 45
Neri Milano 53
Cognome
Fabbrica
Salario
Verdi Latina 33
Bruni Monza 32
Imp Op
![Page 24: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/24.jpg)
Ridenominazione di relazioni
Cognome
Sede Retribuzione
Rossi Roma
45
Neri Milano
53
Verdi Latina
33
Bruni Monza
32
Cognome
Agenzia
Stipendio
Rossi Roma 45
Neri Milano 53
Cognome
Fabbrica
Salario
Verdi Latina 33
Bruni Monza 32
Imp Op
Sede,RetribuzioneAgenzia,Stipendio(Imp)
Sede,RetribuzioneFabbrica,Salario(Op)
![Page 25: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/25.jpg)
Ridenominazione di relazioni
Sia r(X) è la schema di una relazione r definita su insieme X={A1,…,Ak}… e sia Y un insieme di attributi Y={B1,…,Bk}
La ridenominazione B1,..,BkA1,…,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 1ik
![Page 26: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/26.jpg)
Ridenominazione di relazioni
Di solito, si indicano nelle ridenominazione solo attributi ridenominati (quelli per cui Ai Bi)
GenitorePadre(Paternità): omesso Figlio
![Page 27: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/27.jpg)
Operatori di manipolazione di relazioni
Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi)Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join
![Page 28: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/28.jpg)
Selezione
Data relazione r su insieme di attributi X, selezione F(r) produce relazione su attributi X che contiene tuple di r che soddisfano la condizione di selezione F
A B C
Selezione secondo FF(r)
A B C
![Page 29: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/29.jpg)
Selezione
F formula proposizionale: condizione di selezione formata da Operatori booleani:
(AND), (OR), (NOT)
![Page 30: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/30.jpg)
Selezione
F formula proposizionale: condizione di selezione formata da Operatori booleani Condizione atomiche: termine che
possono contenere Confronti fra attributi (per esempio,
Stipendio>Tasse, dove Stipendio e Tasse sono attributi)
Confronti fra attributi e constanti (per esempio, Età 60, dove Età è un attributo)
![Page 31: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/31.jpg)
SelezioneCognome
Nome
Età
Stipendio
Rossi Mario 25 1.000,00
Neri Luca 40 1.500,00
Verdi Nico 36 2.250,00
Rossi Marco
40 1.900,00
Impiegati
Cognome
Nome
Età
Stipendio
Verdi Nico 36 2.250,00
Età>30Stipendio>2.000,00(Impiegati)
![Page 32: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/32.jpg)
SelezioneCognome
Nome
Età
Stipendio
Rossi Mario 25 1.000,00
Neri Luca 40 1.500,00
Verdi Nico 36 2.250,00
Rossi Marco
40 1.900,00
Impiegati
Cognome
Nome
Età
Stipendio
Verdi Nico 36 2.250,00
Età>30Stipendio>2.000,00(Impiegati)Età>30Stipendio>2.000,00(Impiegati)
![Page 33: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/33.jpg)
Operatori di manipolazione di relazioni
Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi)Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join
![Page 34: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/34.jpg)
Proiezione
Data relazione r su 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 YY(r) = {t[Y] | t r}
A B C
Proiezione su YY(r)
A B
![Page 35: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/35.jpg)
Proiezione
Per esempio: Impiegati(Cognome,Nome,Reparto,Capo) Cognome,Nome(Impiegati) ha attributi Cognome,
Nome
Relazioni non devono contenere tuple ripetute Tuple uguali collassano in una sola
![Page 36: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/36.jpg)
ProiezioneCognome
Nome
Reparto
Capo
Rossi Mario Vendite De Rossi
Neri Luca Vendite De Rossi
Verdi Nico Personale
Baldi
Rossi Marco
Personale
BaldiReparto
Capo
Vendite De Rossi
Personale
Baldi
Impiegati
Reparto,Capo(Impiegati)
![Page 37: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/37.jpg)
Tuple di una proiezione
Una proiezione Y(r) contiene al più tante tuple quante rSe Y è una superchiave di r, allora Y(r) contiene tante tuple quante rQuesto può accadere comunque anche se Y non è superchiave (basta che le tuple su Y siano casualmente tutte diverse tra loro)
![Page 38: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/38.jpg)
Operatori di manipolazione di relazioni
Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi)Permettono di manipolare relazioni per creare nuove relazione Ridenominazione Selezione Proiezione Join
![Page 39: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/39.jpg)
Join
Operatore che permette di correlare dati contenuti in relazioni diverse confrontando i valori delle tuple (modello relazionale basato su valori)
Join NaturaleTheta-Join
![Page 40: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/40.jpg)
Join Naturale
Permette di correlare dati contenuti in relazioni diverse confrontando attributi con stesso nomeProduce una relazione definita su unione di insiemi di attributi delle due relazioni su cui operaTuple del risultato: ottenute combinando le tuple dei due operandi con valore uguale su attributi comuni
![Page 41: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/41.jpg)
Join Naturale
Date r1(X) e r2(Y), r1r2 è relazione su XY:
r1r2={t su XY | t[X]r1 e t[Y]r2}
![Page 42: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/42.jpg)
Join Naturale
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Reparto Capo
Produzione
Mori
Vendite De Rossi
Rel1 Rel2
Rel1(Impiegato,Reparto) Rel2(Reparto,Capo)
X Y
![Page 43: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/43.jpg)
Join Naturale
Impiegato
Reparto Capo
Rossi Vendite De Rossi
Neri Produzione
Mori
Bianchi Produzione
Mori
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Reparto Capo
Produzione
Mori
Vendite De Rossi
Rel1 Rel2
Rel1 Rel2
![Page 44: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/44.jpg)
Join Naturale
Impiegato
Reparto Capo
Rossi Vendite De Rossi
Neri Produzione
Mori
Bianchi Produzione
Mori
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Reparto Capo
Produzione
Mori
Vendite De Rossi
Rel1 Rel2
Rel1 Rel2
![Page 45: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/45.jpg)
Join Naturale
Se relazioni da combinare definite su stesso insieme di attributi, r1(X), r2(X)… r1r2 = r1r2 Cioè il join coincide con intersezione:
combina tuple con stessi valori di attributi su r1 e r2
![Page 46: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/46.jpg)
Join Naturale
Reparto Capo
Vendite De Rossi
Produzione
Mori
Reparto Capo
Acquisti Baldi
Produzione
Mori
Vendite Rossi
Reparto Capo
Contabilità
Tilli
Produzione
Mori
Vendite De Rossi
Rel1 Rel2
Rel1 Rel2
![Page 47: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/47.jpg)
Join Naturale
Reparto Capo
Vendite De Rossi
Produzione
Mori
Reparto Capo
Acquisti Baldi
Produzione
Mori
Vendite Rossi
Reparto Capo
Contabilità
Tilli
Produzione
Mori
Vendite De Rossi
Rel1 Rel2
Rel1 Rel2
![Page 48: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/48.jpg)
Join Naturale
Se relazioni da combinare definite su insiemi di attributi disgiunti, r1(X), r2(Y) con XY=… condizione di corrispondenza tra tuple è sempre vera… r1r2=r1xr2 (prodotto cartesiano)Combina tutte le tuple di r1 con tutte quelle di r2
![Page 49: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/49.jpg)
Join Naturale
Reparto Capo Impiegato
Progetto
Acquisti Baldi Mori P123
Acquisti Baldi Baldi P124
Produzione
Mori Mori P123
Produzione
Mori Bianchi P124
Reparto Capo
Acquisti Baldi
Produzione
Mori
Impiegato
Progetto
Mori P123
Baldi R124
Rel1 Rel2
Rel1 Rel2
![Page 50: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/50.jpg)
Join Naturale
Numero attributi di r1r2 somma numeri attributi di r1 e r2Spesso join fatto su chiave di relazione Per esempio:
Infrazioni(Codice,Data,Agent,Art,Prov,Numero) Auto(Prov,Numero,Proprietario,Indirizzo)
Spesso imposto vincolo di integrità referenziale tra attributi di join (per evitare che r1 faccia riferimento a valori inesistenti in r2)
![Page 51: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/51.jpg)
Join Naturale
Prov
Numero
Proprietario
Indirizzo
RM 2F7643 Verdi Piero v. Tigli
RM 1A2396 Verdi Piero v. Tigli
RM 4E5432 Bini Luca v. Aceri
MI 2F7643 Luci Gino v. Aceri
Auto
Codice
Data Agente
Art
Prov
Numero
143256
25/10/03
567 44 RM 4E5432
987554
26/10/03
456 34 RM 4E5432
987557
26/10/03
456 34 RM 2F7643
630876
15/10/03
456 53 MI 2F7643
539856
12/10/03
567 44 MI 2F7643
Infrazioni
![Page 52: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/52.jpg)
Join Naturale
Prov
Numero
Proprietario
Indirizzo
RM 2F7643 Verdi Piero v. Tigli
RM 1A2396 Verdi Piero v. Tigli
RM 4E5432 Bini Luca v. Aceri
MI 2F7643 Luci Gino v. Aceri
Auto
Codice
Data Agente
Art
Prov
Numero
143256
25/10/03
567 44 RM 4E5432
987554
26/10/03
456 34 RM 4E5432
987557
26/10/03
456 34 RM 2F7643
630876
15/10/03
456 53 MI 2F7643
539856
12/10/03
567 44 MI 2F7643
Infrazioni
![Page 53: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/53.jpg)
Join Naturale
Codice
Data Agente
Art
Prov
Numero
Proprietario
Indirizzo
143256
25/10/03
567 44 RM 4E5432 Bini Luca v. Aceri
987554
26/10/03
456 34 RM 4E5432 Bini Luca v. Aceri
987557
26/10/03
456 34 RM 2F7643 Verdi Piero v. Tigli
630876
15/10/03
456 53 MI 2F7643 Luci Gino v. Aceri
539856
12/10/03
567 44 MI 2F7643 Luci Gino v. Aceri
Infrazioni Auto
•Tra Infrazioni e Auto esiste vincolo integrità referenziale•{Prov,Numero} è chiave di Auto•Quindi, ogni tupla di Infrazioni è combinata esattamente conuna tupla di Auto
![Page 54: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/54.jpg)
Join completi
Date r1(X) e r2(Y), r1r2 è completo se e solo se, per ogni tupla t1 di r1 esiste tupla t in r1r2 tale che t[X]=t1 e analogamente per r2
![Page 55: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/55.jpg)
Join completi
Cardinalità di un insieme: il numero di elementi che appartengono al insieme Cardinalità di A: scritto |A|
Per esempio: |{a,b,d}|=3, ||=0
![Page 56: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/56.jpg)
Join completi
Cardinalità di join: Se r1r2 è completo:max(|r1|,|r2|) |r1r2| |r1|x|r2|
![Page 57: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/57.jpg)
Join completi
Impiegato
Progetto
Capo
Rossi P124 Mori
Neri P124 Mori
Bianchi P124 Mori
Rossi P124 Bruni
Neri P124 Bruni
Bianchi P124 Bruni
Impiegato
Progetto
Rossi P124
Neri P124
Bianchi P124
Progetto
Capo
P124 Mori
P124 Bruni
Rel1 Rel2
Rel1 Rel2
Un esempio di join con |r1|x|r2| tuple
![Page 58: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/58.jpg)
Join incompleti
Join incompleti hanno tuple senza corrispondenza, dette dangling tuples
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Reparto Capo
Produzione
Mori
Acquisti Bruni
Rel1 Rel2
Impiegato
Reparto Capo
Rossi Vendite Mori
Neri Produzione
Mori
Rel1 Rel2
![Page 59: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/59.jpg)
Join incompleti
Caso limite: se non ci sono tuple combinabili, risultato del join è relazione vuota (senza tuple)
![Page 60: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/60.jpg)
Cardinalità di join
Date r1(X) e r2(Y): 0 |r1r2| |r1|x|r2|
Se r1 r2 completo:|r1r2| max(|r1|,|r2|)
Ogni tuple di r1 combinata con almeno 1 tupla di r2 e viceversa
![Page 61: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/61.jpg)
Cardinalità di join
Se XY contiene chiave per r2|r1r2| |r1|
Ogni tuple di r1 combinata con al più 1 tupla di r2
![Page 62: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/62.jpg)
Cardinalità di join
Se XY contiene chiave per r2 e c’è vincolo di integrità referenziale fra XY in r1 e la chiave di r2
|r1r2| = |r1|Ogni tuple di r1 combinata esattamente con 1 tupla di r2
![Page 63: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/63.jpg)
Join esterni
Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi comuni, inserendo valori NULL in assenza di contropartiNon tralasciano tuple di operandi nel risultato
![Page 64: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/64.jpg)
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 primo operando Aggiunge tuple di r2
Join esterno completo: estende tuple di entrambi gli operandi Bilaterale
![Page 65: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/65.jpg)
Join esterni
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Reparto Capo
Produzione
Mori
Acquisti Bruni
Rel1 Rel2
Impiegato
Reparto Capo
Rossi Vendite NULL
Neri Produzione
Mori
Bianchi Produzione
Mori
Rel1 LEFT Rel2
![Page 66: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/66.jpg)
Join esterni
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Reparto Capo
Produzione
Mori
Acquisti Bruni
Rel1 Rel2
Impiegato
Reparto Capo
Neri Produzione
Mori
Bianchi Produzione
Mori
NULL Acquisti Baldi
Rel1 RIGHT Rel2
![Page 67: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/67.jpg)
Join esterni
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Reparto Capo
Produzione
Mori
Acquisti Bruni
Rel1 Rel2
Impiegato
Reparto Capo
Rossi Vendite NULL
Neri Produzione
Mori
Bianchi Produzione
Mori
NULL Acquisti Baldi
Rel1 FULL Rel2
![Page 68: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/68.jpg)
Theta-Join
Serve per fare Join su relazioni senza attributi omonimiOperatore derivato: si ottiene come prodotto cartesiano seguito da selezione di tuple che verificano condizione di uguaglianza tra valori di attributi
r1 F r2 = F(r1 r2)
![Page 69: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/69.jpg)
Theta-Join
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Divisione
Capo
Vendite Bruni
Produzione
Mori
Acquisti Baldi
Rel1 Rel2
Impiegato
Reparto Divisione Capo
Rossi Vendite Vendite NULL
Neri Produzione
Produzione
Mori
Bianchi Produzione
Produzione
Mori
Reparto=Divisione(Rel1 Rel2)
![Page 70: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/70.jpg)
Theta-Join ed Equi-Join
Theta-Join: r1 F r2 = F(r1 r2)Condizione di selezione F è formula proposizionale come descritto per operatore di selezioneSe F è congiunzione di uguaglianze tra attributi di r1 e attributi di r2: theta-join detto equi-join
![Page 71: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/71.jpg)
Theta-Join ed Equi-Join
Per esempio: Rel1(Impiegato,Reparto),
Rel2(Divisione,Capo)Reparto=Divisione(Rel1 Rel2)
Infrazioni(Codice,Data,Ag,Art,Prov,Num), Auto(Provincia,Targa,Prop,Indirizzo)
Prov=Provincia Num=Targa(Infrazioni Auto)
![Page 72: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/72.jpg)
Theta-Join ed Equi-Join
Theta-join e equi-join più utili di join naturale Permettono di operare su relazioni
senza attributi in comune Join naturale simulabile mediante
ridenominazione, equi-join e proiezione
![Page 73: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/73.jpg)
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)R1R2 =
A,B,C,D(R1B=B’C=C’(B’,C’B,C(R2)))
![Page 74: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/74.jpg)
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)R1R2 =
A,B,C,D(R1B=B’C=C’(B’,C’B,C(R2)))
Join naturale Equi-join
![Page 75: Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema](https://reader035.vdocuments.pub/reader035/viewer/2022081514/5542eb6a497959361e8d6989/html5/thumbnails/75.jpg)
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)R1R2 =
A,B,C,D(R1B=B’C=C’(B’,C’B,C(R2)))
Si ridenomina R2 affinchè abbia attributi diversi da quelli di R1Equi-join tra R1 e R2 per selezionare tuple in corrispondenzaProiezione del risultato per eliminare attributi ridondanti