Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGiacinta Ricciardi Modificato 6 anni fa
1
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Corso di Architetture Info Anno accademico Prof. Carlo Batini Richiami sul modello relazionale Le viste e l’outerjoin 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
2
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
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
3
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”
4
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
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
5
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
6
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
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
7
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
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
8
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
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
9
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Viste, esempio A Mori B Bruni Reparto Capo Rossi Neri Bianchi Impiegato Afferenza Direzione una vista: Supervisione = PROJ Impiegato, Capo (Afferenza JOIN Direzione) 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
10
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)) 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
11
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
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
12
Viste come strumento di programmazione
Trovare gli impiegati che hanno lo stesso capo di Rossi Senza vista: PROJ Impiegato (Afferenza JOIN Direzione) JOIN REN ImpR,RepR Imp,Reparto ( SEL Impiegato='Rossi' (Afferenza JOIN Direzione)) Con la vista: PROJ Impiegato (Supervisione) JOIN REN ImpR,RepR Imp,Reparto ( SEL Impiegato='Rossi' (Supervisione)) 11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
13
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
L’utilizzo di viste permette di adottare un percorso piu’ semplice per esprimere interrogazioni in SQL Strategia Cercare di spezzare la interrogazione in passo, in modo tale che la relazione calcolata in un passo sia in input al passo successivi 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
14
Richiami sull’ outer join
11/10/2001 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
15
Viste e aggiornamenti, attenzione
Afferenza Direzione A Mori B Bruni Reparto Capo Rossi Neri Impiegato Verdi C Supervisione 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
16
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
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
17
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
18
Tipologie di Join esterno
Sinistro LEFT: mantiene tutte le ennuple del primo operando, estendendole con valori nulli, se necessario Destro RIGHT: ... del secondo operando ... Completo FULL: … di entrambi gli operandi ... 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 3
19
Esempio di Join esterno sinistro
Impiegato Reparto Rossi A Neri B Bianchi Impiegati Reparto Capo B Mori C Bruni Reparti A Rossi C Impiegati JOINLEFT Reparti Neri B Mori Impiegato Reparto Capo Bianchi Rossi A NULL 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 3
20
Esempio di Join esterno destro
Impiegato Reparto Rossi A Neri B Bianchi Impiegati Reparto Capo B Mori C Bruni Reparti A C Bruni Impiegati JOINRIGHT Reparti Neri B Mori Impiegato Reparto Capo Bianchi NULL C Bruni 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 3
21
Esempio di Join esterno “full”
Impiegato Reparto Rossi A Neri B Bianchi Impiegati Reparto Capo B Mori C Bruni Reparti A Rossi C Bruni Impiegati JOINFULL Reparti Neri B Mori Impiegato Reparto Capo Bianchi Rossi A NULL NULL C Bruni 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 3
22
Sintassi degli Outer join in SQL
select paternita.figlio, padre, madre from maternita right outer join paternita on maternita.figlio = paternita.figlio from maternita left outer join paternita from maternita full outer join paternita 15/10/2001 rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.