[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 618.   Viste

È possibile trasformare l'interrogazione di una o più relazioni in una vista, che in pratica diventa una relazione virtuale.

618.1   Creazione della vista «Listino»

Con l'ausilio di un programma per la scrittura e modifica di file di testo puro, si crei il file prova-vista-listino.sql, contenente il testo seguente, sostituendo le metavariabili con informazioni appropriate e rispettando la punteggiatura:

-- Creazione della vista "Listino"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-vista-listino.sql

CREATE VIEW Listino AS
            SELECT Articolo AS Codice,
                   Descrizione AS Articolo,
                   Listino AS EUR
                   FROM Articoli;

In questo modo, si crea la vista Listino, composta dagli attributi Codice, Articolo e EUR, utilizzando, rispettivamente, gli attributi Articolo, Descrizione e Listino dalla relazione Articoli.

Si controlli di avere scritto il file prova-vista-listino.sql in modo corretto, rispettando anche la punteggiatura; si controlli di avere salvato il file con il nome previsto, quindi si proceda con il comando seguente:

sqlite3 mag.db < prova-vista-listino.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la creazione della vista Listino ha avuto successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, si deve prima cancellare la vista, quindi si può ritentare l'inserimento del comando (ammesso che il file prova-vista-listino.sql sia stato corretto di conseguenza). I passaggi per eliminare la vista, in modo interattivo, sono quelli seguenti:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> DROP VIEW Listino;[Invio]

sqlite> .quit[Invio]

Quando si è consapevoli di avere creato correttamente la vista Listino, la si può interrogare come se fosse una relazione normale. Si esegua il procedimento seguente, in modo interattivo:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Listino;[Invio]

Si dovrebbe ottenere il listato seguente:

Codice      Articolo                       EUR       
----------  -----------------------------  ----------
1           Dischetti da 9 cm 1440 Kibyte  0.2       
2           Dischetti da 9 cm 1440 Kibyte  0.25      
101         CD-R 16x                       0.5       
102         CD-R 52x                       1         
201         CD-RW 4x                       1         
202         CD-RW 8x                       1.5       
301         DVD-R 8x                       1         
302         DVD-R 16x                      2         
401         DVD+R 8x                       1         
402         DVD+R 16x                      2         
501         DVD-RW 8x                      2         
601         DVD+RW 8x                      2         

Come sempre, si conclude il funzionamento interattivo di sqlite3 con il comando .quit:

sqlite> .quit[Invio]

618.2   Creazione della vista «Resi»

Con l'ausilio di un programma per la scrittura e modifica di file di testo puro, si crei il file prova-vista-resi.sql, contenente il testo seguente, sostituendo le metavariabili con informazioni appropriate e rispettando la punteggiatura:

-- Creazione della vista "Resi" (resi a fornitori)
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-vista-resi.sql

CREATE VIEW Resi AS
            SELECT Articoli.Descrizione     AS Articolo,
                   Movimenti.Data           AS Data,
                   Fornitori.RagioneSociale AS Fornitore,
                   Movimenti.Quantita       AS Reso,
                   Movimenti.Valore         AS Valore
                   FROM Articoli, Movimenti, Fornitori
                   WHERE Movimenti.Causale   = 4
                     AND Movimenti.Articolo  = Articoli.Articolo
                     AND Movimenti.Fornitore = Fornitori.Fornitore;

In questo modo, si crea la vista Resi, utilizzando le relazioni Articoli, Movimenti e Fornitori, limitando la selezione delle tuple della relazione Movimenti a quelle che riguardano un reso a fornitore, in quanto la causale corrisponde al numero quattro.

Si controlli di avere scritto il file prova-vista-resi.sql in modo corretto, rispettando anche la punteggiatura; si controlli di avere salvato il file con il nome previsto, quindi si proceda con il comando seguente:

sqlite3 mag.db < prova-vista-resi.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la creazione della vista Resi ha avuto successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, si deve prima cancellare la vista, quindi si può ritentare l'inserimento del comando (ammesso che il file prova-vista-resi.sql sia stato corretto di conseguenza). I passaggi per eliminare la vista, in modo interattivo, sono quelli seguenti:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> DROP VIEW Resi;[Invio]

sqlite> .quit[Invio]

Quando si è consapevoli di avere creato correttamente la vista Resi, la si può interrogare come se fosse una relazione normale. Si esegua il procedimento seguente, in modo interattivo:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Resi;[Invio]

Si dovrebbe ottenere il listato seguente:

Articolo    Data        Fornitore   Reso        Valore    
----------  ----------  ----------  ----------  ----------
CD-R 52x    2007-01-20  Caio Cai    100         20        
DVD+R 8x    2007-01-20  Tizio Tizi  100         20        

Come sempre, si conclude il funzionamento interattivo di sqlite3 con il comando .quit:

sqlite> .quit[Invio]

618.3   Verifica sulla creazione della vista «Acquisti»

Si prepari il file vista-acquisti.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere un elenco dei movimenti di magazzino che riguardano i carichi per acquisto (causale uno). La vista deve essere composta dagli attributi seguenti:

  1. Articolo, corrispondente alla descrizione dell'articolo acquistato;

  2. Data, corrispondente alla data di acquisto;

  3. Fornitore, corrispondente alla ragione sociale del fornitore dal quale l'articolo è stato acquistato;

  4. Acquistato, corrispondente alla quantità acquistata;

  5. Valore, corrispondente al valore complessivo caricato (pari all'attributo con lo stesso nome della relazione Movimenti).

Figura 618.9. Scheletro del file vista-acquisti.sql, da completare.

-- Creazione della vista "Acquisti"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: vista-acquisti.sql

CREATE VIEW ...
       SELECT ...
              FROM ...
              WHERE ...

Una volta completato e salvato il file vista-acquisti.sql, se ne controlli il funzionamento con la base di dati:

sqlite3 mag.db < vista-acquisti.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la creazione della vista Acquisti ha avuto successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, si deve prima cancellare la vista, quindi si può ritentare l'inserimento del comando (ammesso che il file vista-acquisti.sql sia stato corretto di conseguenza).

Quando si è consapevoli di avere creato correttamente la vista Acquisti, la si può interrogare come se fosse una relazione normale. Si esegua il procedimento seguente, in modo interattivo:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Acquisti;[Invio]

Si dovrebbe ottenere il listato seguente:

Articolo                                Data        Fornitore           Acquistato  Valore    
--------------------------------------  ----------  ------------------  ----------  ----------
Dischetti da 9 cm 1440 Kibyte colorati  2007-01-15  Sempronio Semproni  10000       100       
CD-R 52x                                2007-01-17  Caio Cai            1000        200       
DVD+R 8x                                2007-01-19  Tizio Tizi          1000        200       
DVD+RW 8x                               2007-01-21  Sempronio Semproni  2000        1000      

Se tutto funziona regolarmente, si consegni per la valutazione la stampa del file vista-acquisti.sql.

618.4   Verifica sulla creazione della vista «Vendite»

Si prepari il file vista-vendite.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere un elenco dei movimenti di magazzino che riguardano gli scarichi per vendita (causale due). La vista deve essere composta dagli attributi seguenti:

  1. Articolo, corrispondente alla descrizione dell'articolo venduto;

  2. Data, corrispondente alla data di vendita;

  3. Cliente, corrispondente alla ragione sociale del cliente al quale l'articolo è stato venduto;

  4. Venduto, corrispondente alla quantità venduta;

  5. Valore, corrispondente al valore complessivo scaricato (pari all'attributo con lo stesso nome della relazione Movimenti).

Figura 618.12. Scheletro del file vista-vendite.sql, da completare.

-- Creazione della vista "Vendite"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: vista-vendite.sql

CREATE VIEW ...
       SELECT ...
              FROM ...
              WHERE ...

Una volta completato e salvato il file vista-vendite.sql, se ne controlli il funzionamento con la base di dati:

sqlite3 mag.db < vista-vendite.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la creazione della vista Vendite ha avuto successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, si deve prima cancellare la vista, quindi si può ritentare l'inserimento del comando (ammesso che il file vista-vendite.sql sia stato corretto di conseguenza).

Quando si è consapevoli di avere creato correttamente la vista Vendite, la si può interrogare come se fosse una relazione normale. Si esegua il procedimento seguente, in modo interattivo:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Vendite;[Invio]

Si dovrebbe ottenere il listato seguente:

Articolo                                Data        Cliente        Venduto     Valore    
--------------------------------------  ----------  -------------  ----------  ----------
Dischetti da 9 cm 1440 Kibyte colorati  2007-01-16  Filano Filani  1000        10        
CD-R 52x                                2007-01-18  Mevio Mevi     100         20        
DVD+R 8x                                2007-01-20  Martino Marti  200         20        
DVD+RW 8x                               2007-01-25  Mevio Mevi     1000        500       

Se tutto funziona regolarmente, si consegni per la valutazione la stampa del file vista-vendite.sql.

618.5   Conclusione

Prima di passare al capitolo successivo, si deve riprendere il file magazzino.sql e vi si devono aggiungere le istruzioni per la creazione delle viste Acquisti e Vendite, come contenuto nei file vista-acquisti.sql e vista-vendite.sql.

Una volta aggiornato il file magazzino.sql come descritto, si deve cancellare il file mag.db e ricreare a partire dalle istruzioni contenute nel file magazzino.sql:

sqlite3 mag.db < magazzino.sql[Invio]

Se vengono segnalati degli errori, occorre correggere il file magazzino.sql, cancellare nuovamente il file mag.db, quindi si deve ripetere l'operazione. La base di dati contenuta nel file mag.db, viene usata nel capitolo successivo e non si può proseguire se non si riesce a ricrearla correttamente.

All'inizio del capitolo sono stati creati i file prova-vista-listino.sql e prova-vista-resi.sql, che a questo punto non servono più e vanno cancellati.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome viste.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!