[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [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.
|
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 ---------- -------------------------------------- ---------- ---------- 2007-01-15 Dischetti da 9 cm 1440 Kibyte colorati 1 10000 2007-01-16 Dischetti da 9 cm 1440 Kibyte colorati 2 1000 2007-01-17 CD-R 52x 1 1000 2007-01-18 CD-R 52x 2 100 2007-01-19 DVD+R 8x 1 1000 2007-01-20 DVD+R 8x 2 200 2007-01-20 DVD+R 8x 4 100 2007-01-20 CD-R 52x 4 100 2007-01-21 DVD+RW 8x 1 2000 2007-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 ---------- -------------------------------------- ------------------- 2007-01-15 Dischetti da 9 cm 1440 Kibyte colorati Carico per acquisto 2007-01-16 Dischetti da 9 cm 1440 Kibyte colorati Scarico per vendita 2007-01-17 CD-R 52x Carico per acquisto 2007-01-18 CD-R 52x Scarico per vendita 2007-01-19 DVD+R 8x Carico per acquisto 2007-01-20 DVD+R 8x Scarico per vendita 2007-01-20 DVD+R 8x Reso a fornitore 2007-01-20 CD-R 52x Reso a fornitore 2007-01-21 DVD+RW 8x Carico per acquisto 2007-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.
|
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 2007-01-15 2 Scarico per vendita 2007-01-16 102 Carico per acquisto 2007-01-17 102 Scarico per vendita 2007-01-18 401 Carico per acquisto 2007-01-19 401 Scarico per vendita 2007-01-20 401 Reso a fornitore 2007-01-20 102 Reso a fornitore 2007-01-20 601 Carico per acquisto 2007-01-21 601 Scarico per vendita 2007-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.
|
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 2007-01-16 Filano Filani 102 Scarico per vendita 2007-01-18 Mevio Mevi 401 Scarico per vendita 2007-01-20 Martino Martin 601 Scarico per vendita 2007-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.
|
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 2007-01-16 Filano Filani 401 Scarico per vendita 2007-01-20 Martino Martin 601 Scarico per vendita 2007-01-25 Mevio Mevi 102 Scarico per vendita 2007-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 2007.02 --- Copyright © 2000-2007 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] [indice analitico]