[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Quando si realizzano delle relazioni, spesso si considerano dei collegamenti tra queste, per evitare di ripetere le stesse informazioni in relazioni differenti. La relazione Movimenti, creata all'inizio di queste lezioni, contiene diversi attributi che, in pratica, fanno riferimento a tuple di altre relazioni.
Figura 509.1. La relazione Movimenti, già apparsa nella figura 505.12.
|
Intuitivamente si comprende che i dati usati per creare il collegamento con un'altra relazione, devono essere sufficienti a individuare le tuple in modo univoco. Quindi, sulla base di questa univocità, si possono collegare effettivamente i dati attraverso delle interrogazioni che coinvolgono tutte le relazioni interessate, per generare un listato con le informazioni desiderate.
Con l'ausilio di un programma per la scrittura e modifica di file di testo puro, si crei il file prova-interrogazione-movimenti-articoli.sql
, contenente il testo seguente, sostituendo le metavariabili con informazioni appropriate e rispettando la punteggiatura:
|
Come si può vedere, per evitare ambiguità, i nomi degli attributi sono preceduti dal nome della relazione a cui appartengono, separati da un punto.
Si controlli di avere scritto il file prova-interrogazione-movimenti-articoli.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-interrogazione-movimenti-articoli.sql
[Invio]
Si dovrebbe ottenere il listato seguente:
Data Descrizione Causale Quantita ---------- -------------------------------------- ---------- ---------- 2006-01-15 Dischetti da 9 cm 1440 Kibyte colorati 1 10000 2006-01-16 Dischetti da 9 cm 1440 Kibyte colorati 2 1000 2006-01-17 CD-R 52x 1 1000 2006-01-18 CD-R 52x 2 100 2006-01-19 DVD+R 8x 1 1000 2006-01-20 DVD+R 8x 2 200 2006-01-20 DVD+R 8x 4 100 2006-01-20 CD-R 52x 4 100 2006-01-21 DVD+RW 8x 1 2000 2006-01-25 DVD+RW 8x 2 1000 |
Si riprenda il file prova-interrogazione-movimenti-articoli.sql
e lo si modifichi in modo da avere il contenuto seguente:
|
Si controlli di avere modificato il file prova-interrogazione-movimenti-articoli.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-interrogazione-movimenti-articoli.sql
[Invio]
Si dovrebbe ottenere il listato seguente:
Data Descrizione Descrizione ---------- -------------------------------------- ------------------- 2006-01-15 Dischetti da 9 cm 1440 Kibyte colorati Carico per acquisto 2006-01-16 Dischetti da 9 cm 1440 Kibyte colorati Scarico per vendita 2006-01-17 CD-R 52x Carico per acquisto 2006-01-18 CD-R 52x Scarico per vendita 2006-01-19 DVD+R 8x Carico per acquisto 2006-01-20 DVD+R 8x Scarico per vendita 2006-01-20 DVD+R 8x Reso a fornitore 2006-01-20 CD-R 52x Reso a fornitore 2006-01-21 DVD+RW 8x Carico per acquisto 2006-01-25 DVD+RW 8x Scarico per vendita |
Si prepari il file interrogazione-movimenti-causali-01.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple per le quali si possa stabilire un abbinamento in base al codice della causale. Precisamente, si vuole ottenere l'attributo Articolo dalla relazione Movimenti; l'attributo Descrizione dalla relazione Causali; l'attributo Data dalla relazione Movimenti.
Figura 509.6. Scheletro del file
|
Una volta completato e salvato il file interrogazione-movimenti-causali-01.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-movimenti-causali-01.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Articolo Descrizione Data ---------- ------------------- ---------- 2 Carico per acquisto 2006-01-15 2 Scarico per vendita 2006-01-16 102 Carico per acquisto 2006-01-17 102 Scarico per vendita 2006-01-18 401 Carico per acquisto 2006-01-19 401 Scarico per vendita 2006-01-20 401 Reso a fornitore 2006-01-20 102 Reso a fornitore 2006-01-20 601 Carico per acquisto 2006-01-21 601 Scarico per vendita 2006-01-25 |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-movimenti-causali-01.sql | lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-movimenti-causali-01.sql
.
Si prepari il file interrogazione-movimenti-causali-clienti-01.sql
, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple per le quali si possa stabilire un abbinamento in base al codice della causale e in base al codice del cliente. Precisamente, si vuole ottenere l'attributo Articolo dalla relazione Movimenti; l'attributo Descrizione dalla relazione Causali; l'attributo Data dalla relazione Movimenti; l'attributo RagioneSociale dalla relazione Clienti.
Figura 509.8. Scheletro del file
|
Una volta completato e salvato il file interrogazione-movimenti-causali-clienti-01.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-movimenti-causali-clienti-01.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Articolo Descrizione Data RagioneSociale ---------- ------------------- ---------- -------------- 2 Scarico per vendita 2006-01-16 Filano Filani 102 Scarico per vendita 2006-01-18 Mevio Mevi 401 Scarico per vendita 2006-01-20 Martino Martin 601 Scarico per vendita 2006-01-25 Mevio Mevi |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-movimenti-causali-clienti-01.sql
\
\| lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-movimenti-causali-clienti-01.sql
.
Si prepari il file interrogazione-movimenti-causali-clienti-02.sql
, che deve avere gli stessi requisiti della verifica precedente, facendo in modo, però, che il risultato dell'interrogazione avvenga in modo ordinato, in base alla ragione sociale dei clienti.
Figura 509.10. Scheletro del file
|
Una volta completato e salvato il file interrogazione-movimenti-causali-clienti-02.sql
, se ne controlli il funzionamento con la base di dati:
$
sqlite3 mag.db < interrogazione-movimenti-causali-clienti-02.sql
[Invio]
Si dovrebbe ottenere il risultato seguente:
Articolo Descrizione Data RagioneSociale ---------- ------------------- ---------- -------------- 2 Scarico per vendita 2006-01-16 Filano Filani 401 Scarico per vendita 2006-01-20 Martino Martin 601 Scarico per vendita 2006-01-25 Mevio Mevi 102 Scarico per vendita 2006-01-18 Mevio Mevi |
Se il risultato è corretto, si proceda con la stampa:
$
sqlite3 mag.db < interrogazione-movimenti-causali-clienti-02.sql
\
\| lpr
[Invio]
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-movimenti-causali-clienti-02.sql
.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome interrogazioni_simultanee_di_piu_relazioni.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]