Corso di Architetture Info Anno accademico 2009 2010

  • Slides: 22
Download presentation
Corso di Architetture Info Anno accademico 2009 -2010 Prof. Carlo Batini 5. 2. 2

Corso di Architetture Info Anno accademico 2009 -2010 Prof. Carlo Batini 5. 2. 2 Richiami sul modello relazionale Le viste e l’outerjoin 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 1

Cosa e’ una vista? Una vista e’ una relazione derivata a partire dalle relazioni

Cosa e’ una vista? Una vista e’ una relazione derivata a partire dalle relazioni definite nello schema di base di dati La derivazione e’ espressa per mezzo di una normale interrogazione SQL Sintassi di una vista • CREATE VIEW <Nome View> AS Interrogazione SQL • La relazione che costituisce la vista eredita i nomi degli attributi citati nella SELECT 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 2

Viste e schemi esterni • Le viste sono utilizzate anche per esprimere gli schemi

Viste e schemi esterni • Le viste sono utilizzate anche per esprimere gli schemi esterni della architettura ANSI • Schema logico • Person (SSN, Country) • Schema esterno: gli austriaci • SELECT SSN • FROM Person • WHERE Country = “Austria”

Esempio Professore (CFiscale, Nome, Cognome, Eta’ Area-di -Ricerca) Vogliamo definire una vista dei professori

Esempio Professore (CFiscale, Nome, Cognome, Eta’ Area-di -Ricerca) Vogliamo definire una vista dei professori giovani e che fanno ricerca in basi di dati CREATE VIEW PROFESSOREGBD AS Select Nome, Cognome, Eta’, Area-di-Ricerca from Professore Where Eta’ < 40 and Area-di-Ricerca = “Basi di dati” 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 4

Viste virtuali e materializzate • Due tipi di relazioni derivate: • viste materializzate •

Viste virtuali e materializzate • Due tipi di relazioni derivate: • viste materializzate • relazioni virtuali (o viste) 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 5

Viste materializzate • relazioni derivate memorizzate nella base di dati • vantaggi: • immediatamente

Viste materializzate • relazioni derivate memorizzate nella base di dati • vantaggi: • immediatamente disponibili per le interrogazioni • svantaggi: • ridondanti • appesantiscono gli aggiornamenti • non sono supportate dai DBMS 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 6

Viste virtuali • relazioni virtuali (o viste): • sono supportate dai DBMS • una

Viste virtuali • relazioni virtuali (o viste): • sono supportate dai DBMS • una interrogazione su una vista viene eseguita "ricalcolando" la vista 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 7

Attenzione • Qui e nel seguito le interrogazioni sono espresse in algebra relazionale, non

Attenzione • Qui e nel seguito le interrogazioni sono espresse in algebra relazionale, non in SQL 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 8

Viste, esempio Afferenza Impiegato Reparto Rossi A Neri B Bianchi B • una vista:

Viste, esempio Afferenza Impiegato Reparto Rossi A Neri B Bianchi B • una vista: Supervisione = PROJ Impiegato, 11/10/2001 Capo Direzione Reparto A B B Capo Mori Bruni (Afferenza JOIN Direzione) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 9

Interrogazioni sulle viste • Sono eseguite sostituendo alla vista la sua definizione: SELCapo='Leoni' (Supervisione)

Interrogazioni sulle viste • Sono eseguite sostituendo alla vista la sua definizione: SELCapo='Leoni' (Supervisione) viene eseguita come PROJ Impiegato, 11/10/2001 SELCapo='Leoni'( Capo (Afferenza JOIN Direzione)) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 10

Viste, motivazioni Sono un importante strumento di programmazione: • si può semplificare la scrittura

Viste, motivazioni Sono un importante 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 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 11

Viste come strumento di programmazione • Trovare gli impiegati che hanno lo stesso capo

Viste come strumento di programmazione • Trovare gli impiegati che hanno lo stesso capo di Rossi • Senza vista: PROJ (Afferenza JOIN Direzione) JOIN REN Imp. R, Rep. R Imp, Reparto ( SEL Impiegato='Rossi' (Afferenza JOIN Direzione)) Impiegato • Con la vista: PROJ Impiegato (Supervisione) JOIN REN Imp. R, Rep. R Imp, Reparto ( SEL Impiegato='Rossi' (Supervisione)) 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 12

L’utilizzo di viste permette di adottare un percorso piu’ semplice per esprimere interrogazioni in

L’utilizzo di viste permette di adottare un percorso piu’ semplice per esprimere interrogazioni in SQL Strategia 1. Cercare di spezzare la interrogazione in passo, in modo tale che la relazione calcolata in un passo sia in input al passo successivi 2. Esprimere ogni passo intermedio per mezzo di una vista, che viene quindi citata nel passo successivo. 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 13

Richiami sull’ outer join 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 14

Richiami sull’ outer join 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 14

Viste e aggiornamenti, attenzione Afferenza Impiegato Rossi Neri Verdi Supervisione Reparto A B A

Viste e aggiornamenti, attenzione Afferenza Impiegato Rossi Neri Verdi Supervisione Reparto A B A Direzione Reparto A B B C Impiegato Rossi Neri Verdi Capo Mori Bruni Mori • Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo? 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 15

Viste e aggiornamenti • "Aggiornare una vista": • modificare le relazioni di base in

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 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 16

Esigenza di un nuovo Join il Join esterno • Il join esterno estende, con

Esigenza di un nuovo Join il Join esterno • Il join esterno estende, con valori nulli, le ennuple che verrebbero escluse da un join natuale o theta join • Esiste in tre versioni: • sinistro, destro, completo 04/2007 adattato da Atzeni-etal. , Basi di dati, Capitolo 3 17

Tipologie di Join esterno 1. Sinistro LEFT: mantiene tutte le ennuple del primo operando,

Tipologie di Join esterno 1. Sinistro LEFT: mantiene tutte le ennuple del primo operando, estendendole con valori nulli, se necessario 2. Destro RIGHT: . . . del secondo operando. . . 3. Completo FULL: … di entrambi gli operandi. . . 04/2007 adattato da Atzeni-etal. , Basi di dati, Capitolo 3 18

Esempio di Join esterno sinistro Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

Esempio di Join esterno sinistro Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Capo Mori Bruni Impiegati JOINLEFT Reparti Impiegato Reparto Neri B Bianchi B Rossi A 04/2007 Capo Mori adattato da Atzeni-etal. , Basi di dati, Capitolo 3 NULL 19

Esempio di Join esterno destro Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

Esempio di Join esterno destro Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Capo Mori Bruni Impiegati JOINRIGHT Reparti Impiegato Reparto Neri B Bianchi B NULL C 04/2007 Capo Mori Bruni adattato da Atzeni-etal. , Basi di dati, Capitolo 3 20

Esempio di Join esterno “full” Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

Esempio di Join esterno “full” Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Capo Mori Bruni Impiegati JOINFULL Reparti Impiegato Reparto Neri B Bianchi B Rossi A NULL C 04/2007 Capo Mori NULL Bruni adattato da Atzeni-etal. , Basi di dati, Capitolo 3 21

Sintassi degli Outer join in SQL select paternita. figlio, padre, madre from maternita right

Sintassi degli Outer join in SQL select paternita. figlio, padre, madre from maternita right outer join paternita on maternita. figlio = paternita. figlio select paternita. figlio, padre, madre from maternita left outer join paternita on maternita. figlio = paternita. figlio select paternita. figlio, padre, madre from maternita full outer join paternita on maternita. figlio = paternita. figlio 15/10/2001 rielaborato da Atzeni-etal. , Basi di dati, Capitolo 4 22