Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni...

26
Join e proiezioni: problemi Impiegato Reparto Rossi A Neri B Bianchi B Reparto Capo B Mori C Bruni Neri B Mori Impiegato Reparto Capo Bianchi B Mori Impiegato Reparto Neri B Bianchi B Reparto Capo B Mori

Transcript of Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni...

Page 1: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Join e proiezioni: problemi

Impiegato RepartoRossi ANeri B

Bianchi B

Reparto CapoB MoriC Bruni

Neri B MoriImpiegato Reparto Capo

Bianchi B Mori

Impiegato RepartoNeri B

Bianchi B

Reparto CapoB Mori

Page 2: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Proiezioni e join: problemi

Neri B MoriImpiegato Reparto Capo

Bianchi B BruniVerdi A Bini

Neri BImpiegato Reparto

Bianchi BVerdi A

B MoriReparto Capo

B BruniA Bini

Verdi A Bini

Neri B MoriImpiegato Reparto Capo

Bianchi B BruniNeri B Bruni

Bianchi B Mori

Page 3: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Join e proiezioni

• R 1(X1), R 2(X2)

PROJX1 (R 1 JOIN R2 ) R 1

• R(X), X = X1 X2

(PROJX1 (R)) JOIN (PROJX2

(R)) R

Page 4: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Join naturale ed equi-join

Impiegato RepartoImpiegati

Reparto CapoReparti

Impiegati JOIN Reparti

PROJImpiegato,Reparto,Capo (

)RENCodice Reparto (Reparti)Impiegati JOIN

SELReparto=Codice

( )

Impiegato RepartoImpiegati

Codice CapoReparti

Page 5: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Interrogazioni (Query)

Un’interrogazione è una funzione E(r) che applicata ad istanze di una base di dati r produce una relazione su un dato insieme di attributi X.

Le interrogazioni su uno schema di base di dati R in algebra relazionale sono espressioni i cui atomi (le variabili) sono relazioni in R.

Page 6: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Esempi

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

Page 7: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

• Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni

SELStipendio>40(Impiegati)

Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

Bianchi 37 385998Neri 42 359553

Rossi 34 457309

Bruni 43 425698Mori 45 504076Lupi 46 608123

Rossi 34 457309Bruni 43 425698Mori 45 504076Lupi 46 608123

Page 8: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

• Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni

PROJMatricola, Nome, Età (SELStipendio>40(Impiegati))

Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

Bianchi 37 385998Neri 42 359553

Rossi 34 457309

Bruni 43 425698Mori 45 504076Lupi 46 608123

Rossi 34 457309Bruni 43 425698Mori 45 504076Lupi 46 608123

Page 9: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

• Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni

PROJCapo (Supervisione JOIN Impiegato=Matricola (SELStipendio>40(Impiegati)))

Page 10: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Esercizi

• Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni

• Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo

• Trovare le matricole dei capi i cui impiegati guadagnano tutti più di 40 milioni

Page 11: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Equivalenza di espressioni

Due espressioni sono equivalenti se:

E1R E2 se E1(r) = E2(r) per ogni istanza r di R

(equivalenza dipendente dallo schema)

L’equivalenza è importante in quanto consente di scegliere, a parità di risultato, l’operazione meno costosa.

E1 E2 se E1R E2 per ogni schema R (equivalenza assoluta)

Page 12: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Equivalenze

• Atomizzazione delle selezioni F1 F2

(E) F1 (F2 (E))

• Idempotenza delle proiezioni X (E) X (XY (E))

• Anticipazione della selezione rispetto al join F (E1

E

2) E

1 (F (E2

) )

Page 13: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Equivalenze

• Anticipazione della proiezione rispetto al join: X1Y2 (E1

E

2) E

1 Y2 (E2

)

(se gli attributi in X2 - Y2 non sono coinvolti nel join)

Allora:

Y (E

1 F

E2) Y

(Y1 (E

1) F

Y2 (E

2) )

dove Y1 e Y2 sono gli attributi di X1 e X2 compresi in Y o coinvolti nel join.

• Inglobamento di una selezione in un prodotto cartesiano a formare un join: F (E1

E

2) E

1 F

E2

Page 14: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Equivalenze

• Distributività della selezione rispetto all’unione: F (E1

E

2) F (E1

)

F (E2

)

• Distributività della selezione rispetto alla differenza:

F (E1 -

E

2) F (E1

) -

F (E2

)

• Distributività della proiezione rispetto all’unione: X (E1

E

2) X (E1

)

X (E2

)

NB La proiezione NON è distributiva rispetto alla differenza

• Tutti gli operatori binari eccetto la differenza godono delle proprietà associativa e commutativa.

Page 15: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Equivalenze

• Corrispondenze fra operatori insiemistici e selezioni complesse

F1 F2 (R) F1

(R) F2(R)

F1 F2 (R) F1

(R) F2(R) F1

(R) F2(R)

F1 ¬F2 (R) F1

(R) - F2(R)

• Proprietà distributiva del join rispetto all’unione: E (E

1

E

2) (E

E

1) (E

E

2)

Page 16: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Algebra con valori nulli

Estensione degli operatori logici ad una logica a 3 valori

(VERO, FALSO, SCONOSCIUTO (U))

not and V U F or V U F

F V V V U F V V V V

U U U U U F U V U U

V F F F F F F V U F

Page 17: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Algebra con valori nulli

•A IS NULL è vero su una tupla t se il valore di t su A è nullo; falso se è specificato.

•A IS NOT NULL è vero su una tupla t se il valore di t su A è specificato; falso se è nullo.

Età>30 (Persone) restituisce le persone la cui età è nota e > 30 anni

Età>30 Età IS NULL (Persone) restituisce le persone che potrebbero avere più di 30 anni

Page 18: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste (relazioni derivate)

• Rappresentazioni diverse per gli stessi dati (schema esterno)

• Relazioni di base: contenuto autonomo

• Relazioni derivate:– relazioni il cui contenuto è funzione del contenuto di

altre relazioni (definito per mezzo di interrogazioni)

Page 19: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste

• Relazioni Virtuali (Viste)Relazioni definite mediante funzioni o espressioni del linguaggio di interrogazione, non memorizzate ma utilizzabili come se lo fossero. Devono essere ricalcolate tutte le volte.

• Viste materializzateRelazioni virtuali effettivamente memorizzate nella base di dati.Immediatamente disponibili ma critiche per il mantenimento dell’allineamento con le relazioni da cui derivano. Non sono supportate dai DBMS.

Page 20: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste

Vantaggi• Permettono di mostrare a un utente le sole componenti della

base di dati che interessano

• Espressioni molto complesse possono essere definite come viste

• Sicurezza: è possibile definire dei diritti di accesso relativi ad una vista (e quindi ad una particolare porzione della base di dati)

• In caso di ristrutturazione della base di dati, le “vecchie” relazioni possono essere di nuovo ricavate mediante viste, consentendo l’uso di applicazioni che fanno riferimento al vecchio schema

Page 21: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste, esempio

• una vista:

Supervisione =

PROJ Impiegato, Capo (Afferenza JOIN Direzione)

A Mori

B Bruni

Reparto CapoRossi A

Neri B

Bianchi B

Impiegato Reparto

Bianchi B B Bruni

Afferenza Direzione

Page 22: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Interrogazioni sulle viste

• Sono eseguite sostituendo alla vista la sua definizione:

SELCapo='Leoni' (Supervisione)

viene eseguita comeSELCapo='Leoni'(

PROJ Impiegato, Capo (Afferenza JOIN Direzione))

Page 23: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste, motivazioni• Schema esterno: ogni utente vede solo

– ciò che gli interessa e nel modo in cui gli interessa, senza essere distratto dal resto

– ciò che e' autorizzato a vedere (autorizzazioni)

• Strumento di programmazione: – si può semplificare la scrittura di interrogazioni: espressioni

complesse e sottoespressioni ripetute• Utilizzo di programmi esistenti su schemi ristrutturati

Invece:• L'utilizzo di viste non influisce sull'efficienza delle interrogazioni

Page 24: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste come strumento di programmazione

• Trovare gli impiegati che hanno lo stesso capo di Rossi

• Senza vista:

PROJ Impiegato (Afferenza JOIN Direzione) JOINREN ImpR,RepR Imp,Reparto (

SEL Impiegato='Rossi' (Afferenza JOIN Direzione))

• Con la vista:

PROJ Impiegato (Supervisione) JOINREN ImpR,RepR Imp,Reparto (

SEL Impiegato='Rossi' (Supervisione))

Page 25: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste e aggiornamenti, attenzione

• Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo?

Afferenza Direzione

A MoriB Bruni

Reparto CapoRossi ANeri B

Impiegato Reparto

Neri BNeri B B BruniB BruniB BruniB BruniVerdi A B BruniB BruniB BruniB BruniC Bruni

RossiNeri

ImpiegatoRossiNeri

RossiNeri

Verdi

SupervisioneMoriBruni

CapoMoriBruniMoriBruniBruniBruniMori

Page 26: Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.

Viste e aggiornamenti

• "Aggiornare una vista": – modificare le relazioni di base in modo che la vista,

"ricalcolata" rispecchi l'aggiornamento

• L'aggiornamento sulle relazioni di base corrispondente a quello specificato sulla vista deve essere univoco

• In generale però non è univoco!

• Ben pochi aggionamenti sono ammissibili sulle viste