Algebra relazionale

75
Algebra relazionale

description

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 Modifica, aggiunta, rimozione tuple - PowerPoint PPT Presentation

Transcript of Algebra relazionale

Page 1: Algebra relazionale

Algebra relazionale

Page 2: Algebra relazionale

Accesso ai dati di un DBAggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema Modifica, aggiunta, rimozione tupleInterrogazione 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 DBAggiornamento e interrogazione vengono effettuati usando specifici linguaggi Per esempio: algebra relazionale

Page 4: Algebra relazionale

Algebra relazionaleLinguaggio procedurale di accesso a DB Si specificano operazioni complesse

descrivendo procedimento da usare per ottenere soluzione

Interrogazioni: espressioni complesse

Page 5: Algebra relazionale

Algebra relazionaleAlgebra 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

Operatori insiemisticiRelazioni: 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

Unione di relazioniDate 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

Unione di relazioniMatricola

Cognome

Età

9297 Neri 567432 Neri 399824 Verdi 38

Matricola

Cognome

Età

7274 Rossi 377432 Neri 399824 Verdi 38

Matricola

Cognome

Età

7274 Rossi 377432 Neri 399297 Neri 569824 Verdi 38

Laureati Dirigenti

Laureati Dirigenti

Page 9: Algebra relazionale

Differenza di relazioniDate 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

Differenza di relazioniMatricola

Cognome

Età

9297 Neri 567432 Neri 399824 Verdi 38

Matricola

Cognome

Età

7274 Rossi 377432 Neri 399824 Verdi 38

Matricola

Cognome

Età

7274 Rossi 37

Laureati Dirigenti

Laureati - Dirigenti

Page 11: Algebra relazionale

Intersezione di relazioniDate 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

Intersezione di relazioniMatricola

Cognome

Età

9297 Neri 567432 Neri 399824 Verdi 38

Matricola

Cognome

Età

7274 Rossi 377432 Neri 399824 Verdi 38

Matricola

Cognome

Età

7432 Neri 399824 Verdi 38

Laureati Dirigenti

Laureati Dirigenti

Page 13: Algebra relazionale

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

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

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

Ridenominazione di relazioni

Per esempio:

Padre FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Madre FiglioEva CainoEva SetSara IsaccoAgar Ismaele

Paternità Maternità

Paternità Maternità ?

Page 17: Algebra relazionale

Ridenominazione di relazioni

Una ridenominazione:

Padre FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Paternità GenitorePadre(Paternità)

Page 18: Algebra relazionale

Ridenominazione di relazioni

Una ridenominazione:

Padre FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Paternità GenitorePadre(Paternità)GenitorePadre(Paternità)

Page 19: Algebra relazionale

Ridenominazione di relazioni

Una ridenominazione:

Padre FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Genitore FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo Ismaele

Paternità GenitorePadre(Paternità)GenitorePadre(Paternità)

Page 20: Algebra relazionale

Ridenominazione di relazioni

Un’altra ridenominazione:

Madre FiglioEva CainoEva SetSara IsaccoAgar Ismaele

Genitore FiglioEva CainoEva SetSara IsaccoAgar Ismaele

Maternità GenitoreMadre(Maternità)

Page 21: Algebra relazionale

Ridenominazione di relazioni

Genitore FiglioAdamo CainoAdamo AbeleAbramo IsaccoAbramo IsmaeleEva CainoEva SetSara IsaccoAgar Ismaele

GenitorePadre(Paternità) GenitoreMadre(Maternità)

Corretta applicazionedi unionerelazioni

Page 22: Algebra relazionale

Ridenominazione di relazioniCognome

Agenzia

Stipendio

Rossi Roma 45Neri Milano 53

Imp

Page 23: Algebra relazionale

Ridenominazione di relazioniCognome

Agenzia

Stipendio

Rossi Roma 45Neri Milano 53

Cognome

Fabbrica

Salario

Verdi Latina 33Bruni Monza 32

Imp Op

Page 24: Algebra relazionale

Ridenominazione di relazioni

Cognome

Sede Retribuzione

Rossi Roma

45

Neri Milano

53

Verdi Latina

33

Bruni Monza

32

Cognome

Agenzia

Stipendio

Rossi Roma 45Neri Milano 53

Cognome

Fabbrica

Salario

Verdi Latina 33Bruni Monza 32

Imp Op

Sede,RetribuzioneAgenzia,Stipendio(Imp)

Sede,RetribuzioneFabbrica,Salario(Op)

Page 25: Algebra relazionale

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

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

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

SelezioneData 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

SelezioneF formula proposizionale: condizione di selezione formata da Operatori booleani:

(AND), (OR), (NOT)

Page 30: Algebra relazionale

SelezioneF 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

SelezioneCognome

Nome

Età

Stipendio

Rossi Mario 25 1.000,00Neri Luca 40 1.500,00Verdi Nico 36 2.250,00Rossi Marc

o40 1.900,00

Impiegati

Cognome

Nome

Età

Stipendio

Verdi Nico 36 2.250,00

Età>30Stipendio>2.000,00(Impiegati)

Page 32: Algebra relazionale

SelezioneCognome

Nome

Età

Stipendio

Rossi Mario 25 1.000,00Neri Luca 40 1.500,00Verdi Nico 36 2.250,00Rossi Marc

o40 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

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

ProiezioneData 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

ProiezionePer esempio: Impiegati(Cognome,Nome,Reparto,Capo) Cognome,Nome(Impiegati) ha attributi Cognome,

NomeRelazioni non devono contenere tuple ripetute Tuple uguali collassano in una sola

Page 36: Algebra relazionale

ProiezioneCognome

Nome

Reparto

Capo

Rossi Mario Vendite De RossiNeri Luca Vendite De RossiVerdi Nico Persona

leBaldi

Rossi Marco

Personale

BaldiReparto

Capo

Vendite De Rossi

Personale

Baldi

Impiegati

Reparto,Capo(Impiegati)

Page 37: Algebra relazionale

Tuple di una proiezioneUna 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

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

JoinOperatore 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

Join NaturalePermette 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

Join NaturaleDate r1(X) e r2(Y), r1r2 è relazione su XY:

r1r2={t su XY | t[X]r1 e t[Y]r2}

Page 42: Algebra relazionale

Join NaturaleImpiegato

Reparto

Rossi VenditeNeri Produzio

neBianchi Produzio

ne

Reparto CapoProduzione

Mori

Vendite De Rossi

Rel1 Rel2

Rel1(Impiegato,Reparto) Rel2(Reparto,Capo)

X Y

Page 43: Algebra relazionale

Join Naturale

Impiegato

Reparto Capo

Rossi Vendite De Rossi

Neri Produzione

Mori

Bianchi Produzione

Mori

Impiegato

Reparto

Rossi VenditeNeri Produzio

neBianchi Produzio

ne

Reparto CapoProduzione

Mori

Vendite De Rossi

Rel1 Rel2

Rel1 Rel2

Page 44: Algebra relazionale

Join Naturale

Impiegato

Reparto Capo

Rossi Vendite De Rossi

Neri Produzione

Mori

Bianchi Produzione

Mori

Impiegato

Reparto

Rossi VenditeNeri Produzio

neBianchi Produzio

ne

Reparto CapoProduzione

Mori

Vendite De Rossi

Rel1 Rel2

Rel1 Rel2

Page 45: Algebra relazionale

Join NaturaleSe 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

Join Naturale

Reparto CapoVendite De

RossiProduzione

Mori

Reparto CapoAcquisti BaldiProduzione

Mori

Vendite Rossi

Reparto CapoContabilità

Tilli

Produzione

Mori

Vendite De Rossi

Rel1 Rel2

Rel1 Rel2

Page 47: Algebra relazionale

Join Naturale

Reparto CapoVendite De

RossiProduzione

Mori

Reparto CapoAcquisti BaldiProduzione

Mori

Vendite Rossi

Reparto CapoContabilità

Tilli

Produzione

Mori

Vendite De Rossi

Rel1 Rel2

Rel1 Rel2

Page 48: Algebra relazionale

Join NaturaleSe 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

Join Naturale

Reparto Capo Impiegato

Progetto

Acquisti Baldi Mori P123Acquisti Baldi Baldi P124Produzione

Mori Mori P123

Produzione

Mori Bianchi P124

Reparto CapoAcquisti BaldiProduzione

Mori

Impiegato

Progetto

Mori P123Baldi R124

Rel1 Rel2

Rel1 Rel2

Page 50: Algebra relazionale

Join NaturaleNumero 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

Join Naturale

Prov

Numero

Proprietario

Indirizzo

RM 2F7643 Verdi Piero v. TigliRM 1A2396 Verdi Piero v. TigliRM 4E5432 Bini Luca v. AceriMI 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

Join Naturale

Prov

Numero

Proprietario

Indirizzo

RM 2F7643 Verdi Piero v. TigliRM 1A2396 Verdi Piero v. TigliRM 4E5432 Bini Luca v. AceriMI 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

Join NaturaleCodice

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

Join completiDate 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

Join completiCardinalità 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

Join completiCardinalità di join: Se r1r2 è completo:max(|r1|,|r2|) |r1r2| |r1|x|r2|

Page 57: Algebra relazionale

Join completi

Impiegato

Progetto

Capo

Rossi P124 MoriNeri P124 MoriBianchi P124 MoriRossi P124 BruniNeri P124 BruniBianchi P124 Bruni

Impiegato

Progetto

Rossi P124Neri P124Bianchi P124

Progetto

Capo

P124 MoriP124 Bruni

Rel1 Rel2

Rel1 Rel2

Un esempio di join con |r1|x|r2| tuple

Page 58: Algebra relazionale

Join incompletiJoin incompleti hanno tuple senza corrispondenza, dette dangling tuples

Impiegato

Reparto

Rossi VenditeNeri Produzion

eBianchi Produzion

e

Reparto CapoProduzione

Mori

Acquisti Bruni

Rel1 Rel2

Impiegato

Reparto Capo

Rossi Vendite MoriNeri Produzion

eMori

Rel1 Rel2

Page 59: Algebra relazionale

Join incompletiCaso limite: se non ci sono tuple combinabili, risultato del join è relazione vuota (senza tuple)

Page 60: Algebra relazionale

Cardinalità di joinDate 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

Cardinalità di joinSe XY contiene chiave per r2

|r1r2| |r1|Ogni tuple di r1 combinata con al più 1 tupla di r2

Page 62: Algebra relazionale

Cardinalità di joinSe 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

Join esterniPer 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

Join esterniJoin esterno sinistro: estende solo le tuple del primo operando Aggiunge tuple di r1 senza corrispettivo in

r2Join 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

Join esterniImpiegato

Reparto

Rossi VenditeNeri Produzion

eBianchi Produzion

e

Reparto CapoProduzione

Mori

Acquisti Bruni

Rel1 Rel2

Impiegato

Reparto Capo

Rossi Vendite NULLNeri Produzion

eMori

Bianchi Produzione

Mori

Rel1 LEFT Rel2

Page 66: Algebra relazionale

Join esterniImpiegato

Reparto

Rossi VenditeNeri Produzion

eBianchi Produzion

e

Reparto CapoProduzione

Mori

Acquisti Bruni

Rel1 Rel2

Impiegato

Reparto Capo

Neri Produzione

Mori

Bianchi Produzione

Mori

NULL Acquisti Baldi

Rel1 RIGHT Rel2

Page 67: Algebra relazionale

Join esterniImpiegato

Reparto

Rossi VenditeNeri Produzion

eBianchi Produzion

e

Reparto CapoProduzione

Mori

Acquisti Bruni

Rel1 Rel2

Impiegato

Reparto Capo

Rossi Vendite NULLNeri Produzion

eMori

Bianchi Produzione

Mori

NULL Acquisti Baldi

Rel1 FULL Rel2

Page 68: Algebra relazionale

Theta-JoinServe 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

Theta-JoinImpiegato

Reparto

Rossi VenditeNeri Produzion

eBianchi Produzion

e

Divisione

Capo

Vendite BruniProduzione

Mori

Acquisti Baldi

Rel1 Rel2

Impiegato

Reparto Divisione Capo

Rossi Vendite Vendite NULLNeri Produzion

eProduzione

Mori

Bianchi Produzione

Produzione

Mori

Reparto=Divisione(Rel1 Rel2)

Page 70: Algebra relazionale

Theta-Join ed Equi-JoinTheta-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

Theta-Join ed Equi-JoinPer 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

Theta-Join ed Equi-JoinTheta-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

Theta-Join ed Equi-JoinPer 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

Theta-Join ed Equi-JoinPer 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

Theta-Join ed Equi-JoinPer 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