260 likes | 430 Views
Join e proiezioni: problemi. Impiegato. Impiegato. Reparto. Reparto. Reparto. Reparto. Capo. Capo. Rossi. A. B. Mori. Neri. Neri. B. B. C. Bruni. Bianchi. Bianchi. B. B. Impiegato. Reparto. Capo. Neri. B. Mori. Bianchi. B. Mori. B. Mori. Impiegato. Reparto. Capo.
E N D
Join e proiezioni: problemi Impiegato Impiegato Reparto Reparto Reparto Reparto Capo Capo Rossi A B Mori Neri Neri B B C Bruni Bianchi Bianchi B B Impiegato Reparto Capo Neri B Mori Bianchi B Mori B Mori
Impiegato Reparto Capo Neri B Mori Bianchi B Bruni Verdi A Bini Impiegato Reparto Reparto Capo Neri B B Mori Bianchi B B Bruni Verdi A A Bini Impiegato Reparto Capo Neri B Mori Bianchi B Bruni Neri B Bruni Bianchi B Mori Verdi A Bini Proiezioni e join: problemi
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
Impiegato Impiegato Reparto Reparto Join naturale ed equi-join Impiegati Reparti Reparto Capo Impiegati JOIN Reparti Impiegati Reparti Codice Capo SELReparto=Codice ( ) PROJImpiegato,Reparto,Capo ( ) Impiegati JOIN RENCodice Reparto (Reparti)
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.
Impiegati Matricola Nome Età Stipendio 7309 Rossi 34 45 5998 Bianchi 37 38 9553 Neri 42 35 5698 Bruni 43 42 4076 Mori 45 50 8123 Lupi 46 60 Supervisione Impiegato Capo 7309 5698 5998 5698 9553 4076 5698 4076 4076 8123 Esempi
Matricola Nome Età Stipendio 7309 7309 7309 Rossi Rossi Rossi 34 34 34 45 45 45 5998 5998 Bianchi Bianchi 37 37 38 38 9553 9553 Neri Neri 42 42 35 35 5698 5698 5698 Bruni Bruni Bruni 43 43 43 42 42 42 4076 4076 4076 Mori Mori Mori 45 45 45 50 50 50 8123 8123 8123 Lupi Lupi Lupi 46 46 46 60 60 60 • Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni SELStipendio>40(Impiegati)
Matricola Nome Età Stipendio 7309 7309 7309 Rossi Rossi Rossi 34 34 34 45 45 45 5998 5998 Bianchi Bianchi 37 37 38 38 9553 9553 Neri Neri 42 42 35 35 5698 5698 5698 Bruni Bruni Bruni 43 43 43 42 42 42 4076 4076 4076 Mori Mori Mori 45 45 45 50 50 50 8123 8123 8123 Lupi Lupi Lupi 46 46 46 60 60 60 • Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni PROJMatricola, Nome, Età (SELStipendio>40(Impiegati))
Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (Supervisione JOINImpiegato=Matricola (SELStipendio>40(Impiegati)))
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
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. E1E2 se E1RE2 per ogni schema R (equivalenza assoluta)
Equivalenze • Atomizzazione delle selezioniF1 F2(E) F1(F2(E)) • Idempotenza delle proiezioniX (E) X (XY (E)) • Anticipazione della selezione rispetto al join F (E1 E2) E1 (F (E2) )
Equivalenze • Anticipazione della proiezione rispetto al join:X1Y2(E1 E2) E1 Y2(E2)(se gli attributi in X2 - Y2 non sono coinvolti nel join)Allora: Y(E1 FE2) Y(Y1 (E1) FY2 (E2) )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:sF(E1 E2) E1 FE2
Equivalenze • Distributività della selezione rispetto all’unione:sF(E1 E2) sF(E1)sF(E2) • Distributività della selezione rispetto alla differenza:sF(E1 -E2) sF(E1)-sF(E2) • Distributività della proiezione rispetto all’unione:PX(E1 E2) PX(E1)PX(E2)NB La proiezione NON è distributiva rispetto alla differenza • Tutti gli operatori binari eccetto la differenza godono delle proprietà associativa e commutativa.
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 (E1 E2) (E E1) (EE2)
Algebra con valori nulli Estensione degli operatori logici ad una logica a 3 valori (VERO, FALSO, SCONOSCIUTO (U))
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
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)
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.
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
Impiegato Reparto Reparto Capo Rossi A A Mori Afferenza Direzione Neri B B B Bruni Bruni Bianchi Bianchi B B Viste, esempio • una vista: Supervisione = PROJ Impiegato, Capo (Afferenza JOIN Direzione)
Interrogazioni sulle viste • Sono eseguite sostituendo alla vista la sua definizione: SELCapo='Leoni' (Supervisione) viene eseguita come SELCapo='Leoni'(PROJ Impiegato, Capo (Afferenza JOIN Direzione))
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
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))
Impiegato Reparto Rossi A Reparto Capo Neri Neri Neri B B B A Mori B B B B B Bruni Bruni Bruni Bruni Bruni Verdi A B B B B C Bruni Bruni Bruni Bruni Bruni Supervisione Impiegato Capo Rossi Rossi Rossi Mori Mori Mori Neri Neri Neri Bruni Bruni Bruni Bruni Bruni Verdi Mori Viste e aggiornamenti, attenzione Afferenza Direzione • Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo?
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