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


Capitolo 612.   Creazione ed eliminazione delle relazioni

Una relazione è un insieme di tuple, suddivise in attributi, tutte nello stesso modo. Una relazione si rappresenta normalmente in forma tabellare, dove le tuple sono costituite dalle righe e gli attributi dalle colonne.

Figura 612.1. Relazione «Articoli (Articolo, Descrizione, UM, Listino, ScortaMin)».

Articolo Descrizione UM Listino ScortaMin
1 Dischetti da 9 cm 1440 Kibyte pz 0,20 500
2 Dischetti da 9 cm 1440 Kibyte colorati pz 0,25 500
101 CD-R 16x pz 0,50 500
102 CD-R 52x pz 1,00 500
201 CD-RW 4x pz 1,00 200
202 CD-RW 8x pz 1,50 200
301 DVD-R 8x pz 1,00 200
302 DVD-R 16x pz 2,00 200
401 DVD+R 8x pz 1,00 200
402 DVD+R 16x pz 2,00 200
501 DVD-RW 8x pz 2,00 200
601 DVD+RW 8x pz 2,00 200

I valori che si possono inserire nelle celle della tabella dipendono dal dominio dell'attributo relativo. Per esempio, l'attributo Listino (corrispondente alla quarta colonna) della relazione Articoli, può contenere solo valori numerici positivi, con un massimo di due decimali.

612.1   Creazione di una relazione

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

-- Creazione della relazione "Articoli"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-creazione-articoli.sql

CREATE TABLE Articoli (Articolo    INTEGER        NOT NULL,
                       Descrizione CHAR(60)       NOT NULL,
                       UM          CHAR(7)        DEFAULT 'pz',
                       Listino     NUMERIC(14,2)  DEFAULT 0,
                       ScortaMin   NUMERIC(12,3)  DEFAULT 0,
                       PRIMARY KEY (Articolo));

INSERT INTO Articoli VALUES (1, 'Dischetti da 9 cm 1440 Kibyte', 'pz', 0.2, 500);
INSERT INTO Articoli VALUES (2, 'Dischetti da 9 cm 1440 Kibyte colorati', 'pz', 0.25, 500);

L'istruzione CREATE TABLE permette la creazione della relazione Articoli, stabilendo dei vincoli, per cui gli attributi Articolo e Descrizione non possono contenere un valore nullo; inoltre viene stabilito il valore predefinito per gli altri attributi. Si stabilisce anche che l'attributo Articolo deve essere una chiave primaria, comportando la necessità che non appaiano tuple con lo stesso codice articolo.

Le istruzioni INSERT, inseriscono le prime due tuple della relazione. A questo proposito, si osservi che i dati numerici, come il prezzo di listino e il livello della scorta minima, si indicano così come sono, con l'accortezza di usare il punto per la separazione dei decimali, mentre le stringhe (le informazioni testuali) vanno delimitate da apici singoli.

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

sqlite3 mag.db < prova-creazione-articoli.sql[Invio]

Se il programma mostra dei messaggi, si tratta di errori, che devono essere verificati attentamente, prima di proseguire.

Si ricorda che il file mag.db, contenente la base di dati, viene creato automaticamente se non dovesse già essere presente.

612.2   Eliminazione di una relazione

Per eliminare una relazione si usa l'istruzione DROP TABLE, come nell'esempio seguente:

DROP TABLE Articoli;

Si vuole eliminare la relazione Articoli appena creata nella base di dati contenuta nel file mag.db, ma trattandosi di un'operazione molto semplice, è meglio usare il programma sqlite3 in modo interattivo. Si avvii il programma sqlite3 e si eseguano i comandi successivi, come descritto qui di seguito, utilizzando anche il comando .schema per avere l'elenco delle relazioni esistenti, prima di cancellare effettivamente quella stabilita:

sqlite3 mag.db[Invio]

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

sqlite> .schema[Invio]

CREATE TABLE Articoli (Articolo    INTEGER        NOT NULL,
                       Descrizione CHAR(60)       NOT NULL,
                       UM          CHAR(7)        DEFAULT 'pz',
                       Listino     NUMERIC(14,2)  DEFAULT 0,
                       ScortaMin   NUMERIC(12,3)  DEFAULT 0,
                       PRIMARY KEY (Articolo));

sqlite> DROP TABLE Articoli;[Invio]

sqlite> .quit[Invio]

Si ricorda che se, a seguito dell'inserimento dell'istruzione DROP TABLE, il programma mostra dei messaggi, si tratta di errori che devono essere verificati attentamente, prima di proseguire.

612.3   Verifica sulla creazione e popolazione della relazione «Articoli»

Per poter svolgere questa verifica, gli studenti devono essere in grado di realizzare un file di testo contenente codice SQL, con le istruzioni necessarie alla creazione di una relazione e con quelle che permettono l'inserimento delle tuple. Inoltre, devono essere in grado di utilizzare il programma sqlite3 in modo interattivo, per visualizzare l'elenco delle relazioni esistenti nella base di dati e per eliminare una relazione.

Si riprenda il file prova-creazione-articoli.sql e lo si salvi con il nome creazione-articoli.sql. Il file creazione-articoli.sql va poi modificato aggiungendo le istruzioni necessarie a completare l'inserimento degli articoli che sono visibili nella figura 612.1.

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

sqlite3 mag.db < creazione-articoli.sql[Invio]

Se si ottengono degli errori, si deve eliminare la relazione Articoli dalla base di dati contenuta nel file mag.db, utilizzando il programma sqlite3 in modo interattivo, quindi, dopo le correzioni, si deve riprovare.

Una volta eseguita l'operazione con successo, si stampi il file creazione-articoli.sql e lo si consegni per la correzione all'insegnante.

Nella valutazione viene controllata la correttezza del contenuto del file e la coerenza estetica nella scrittura delle istruzioni SQL.

612.4   Verifica sulla creazione e popolazione della relazione «Causali»

Prima di svolgere questa verifica, è necessario avere svolto quella precedente, della quale valgono anche gli stessi requisiti.

Si crei il file creazione-causali.sql, inserendo le istruzioni necessarie a creare la relazione Causali, con il contenuto che si vede nella figura 612.6, tenendo conto che:

  1. l'attributo Causale è di tipo INTEGER, non ammette il valore nullo e costituisce la chiave primaria;

  2. l'attributo Descrizione è di tipo CHAR a 60 caratteri e non ammette il valore nullo;

  3. l'attributo Variazione è di tipo NUMERIC, a una sola cifra, senza decimali, con un valore predefinito pari a zero.

Figura 612.6. Relazione Causali (Causale, Descrizione, Variazione).

Causale Descrizione Variazione
1 Carico per acquisto +1
2 Scarico per vendita -1
3 Reso da cliente +1
4 Reso a fornitore -1
5 Rettifica aumento acquisto +1
6 Rettifica aumento vendite -1
7 Rettifica diminuzione vendite +1
8 Rettifica diminuzione acquisti -1
9 Carico da produzione +1
10 Scarico a produzione -1
11 Carico da altro magazzino +1
12 Scarico ad altro magazzino -1
13 Saldo iniziale +1

Figura 612.7. Scheletro del file creazione-causali.sql, da completare.

-- Creazione della relazione "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: creazione-causali.sql

CREATE TABLE Causali ...

INSERT INTO Causali ...
...

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

sqlite3 mag.db < creazione-causali.sql[Invio]

Se si ottengono degli errori, si deve eliminare la relazione Causali dalla base di dati contenuta nel file prova.db, utilizzando il programma sqlite3 in modo interattivo, quindi, dopo le correzioni, si deve riprovare.

Una volta eseguita l'operazione con successo, si stampi il file creazione-causali.sql e lo si consegni per la correzione all'insegnante.

Nella valutazione viene controllata la correttezza del contenuto del file e la coerenza estetica nella scrittura delle istruzioni SQL.

612.5   Verifica sulla creazione e popolazione della relazione «Fornitori»

Prima di svolgere questa verifica, è necessario avere svolto quelle precedenti, delle quali valgono anche gli stessi requisiti.

Si crei il file creazione-fornitori.sql, inserendo le istruzioni necessarie a creare la relazione Fornitori, con il contenuto che si vede nella figura 612.8, tenendo conto che:

  1. l'attributo Fornitore è di tipo INTEGER, non ammette il valore nullo e costituisce la chiave primaria;

  2. l'attributo RagioneSociale è di tipo VARCHAR a 120 caratteri e non ammette il valore nullo;

  3. l'attributo Paese è di tipo CHAR a 30 caratteri e il suo valore predefinito è ITALIA;

  4. l'attributo Indirizzo è di tipo VARCHAR a 120 caratteri e non ammette il valore nullo;

  5. l'attributo CAP è di tipo CHAR a 10 caratteri;

  6. l'attributo Citta è di tipo VARCHAR a 120 caratteri e non ammette il valore nullo;

  7. l'attributo Prov è di tipo CHAR a 2 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla;

  8. l'attributo Telefono è di tipo CHAR a 20 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla;

  9. l'attributo Fax è di tipo CHAR a 20 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla;

  10. l'attributo CFPI (codice fiscale o partita IVA) è di tipo CHAR a 30 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla.

Figura 612.8. Relazione Fornitori (Fornitore, RagioneSociale, Paese, Indirizzo, CAP, Citta, Prov, Telefono, Fax, CFPI).

Fornitore RagioneSociale Paese Indirizzo CAP Citta Prov Telefono Fax CFPI
1 Tizio Tizi ITALIA via Tazio, 11 31100 Treviso TV 0422,111111 0422,222222 12345678901
2 Caio Cai ITALIA via Caino, 22 31033 Castelfranco Veneto TV 0423,222222 0423,333333 23456789012
3 Sempronio Semproni ITALIA via Salina, 33 31057 Silea TV 0422,333333 0422,444444 34567890123

Figura 612.9. Scheletro del file creazione-fornitori.sql, da completare.

-- Creazione della relazione "Fornitori"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: creazione-fornitori.sql

CREATE TABLE Fornitori ...

INSERT INTO Fornitori ...
...

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

sqlite3 mag.db < creazione-fornitori.sql[Invio]

Se si ottengono degli errori, si deve eliminare la relazione Fornitori dalla base di dati contenuta nel file mag.db, utilizzando il programma sqlite3 in modo interattivo, quindi, dopo le correzioni, si deve riprovare.

Una volta eseguita l'operazione con successo, si stampi il file creazione-fornitori.sql e lo si consegni per la correzione all'insegnante.

Nella valutazione viene controllata la correttezza del contenuto del file e la coerenza estetica nella scrittura delle istruzioni SQL.

612.6   Verifica sulla creazione e popolazione della relazione «Clienti»

Prima di svolgere questa verifica, è necessario avere svolto quelle precedenti, delle quali valgono anche gli stessi requisiti.

Si crei il file creazione-clienti.sql, inserendo le istruzioni necessarie a creare la relazione Clienti, con il contenuto che si vede nella figura 612.10, tenendo conto che:

  1. l'attributo Cliente è di tipo INTEGER, non ammette il valore nullo e costituisce la chiave primaria;

  2. l'attributo RagioneSociale è di tipo VARCHAR a 120 caratteri e non ammette il valore nullo;

  3. l'attributo Paese è di tipo CHAR a 30 caratteri e il suo valore predefinito è ITALIA;

  4. l'attributo Indirizzo è di tipo VARCHAR a 120 caratteri e non ammette il valore nullo;

  5. l'attributo CAP è di tipo CHAR a 10 caratteri;

  6. l'attributo Citta è di tipo VARCHAR a 120 caratteri e non ammette il valore nullo;

  7. l'attributo Prov è di tipo CHAR a 2 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla;

  8. l'attributo Telefono è di tipo CHAR a 20 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla;

  9. l'attributo Fax è di tipo CHAR a 20 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla;

  10. l'attributo CFPI (codice fiscale o partita IVA) è di tipo CHAR a 30 caratteri e il suo valore predefinito è costituito da una stringa di dimensione nulla.

Figura 612.10. Relazione Clienti (Cliente, RagioneSociale, Paese, Indirizzo, CAP, Citta, Prov, Telefono, Fax, CFPI).

Cliente RagioneSociale Paese Indirizzo CAP Citta Prov Telefono Fax CFPI
1 Mevio Mevi ITALIA via Mare, 11 31050 Morgano TV 0422,444444 0422,555555 45678901234
2 Filano Filani ITALIA via Farfalle, 22 31032 Feltre BL 0439,555555 0439,666666 56789012345
3 Martino Martini ITALIA via Marte, 33 31010 Mareno di Piave TV 0438,666666 0438,777777 67890123456

Figura 612.11. Scheletro del file creazione-clienti.sql, da completare.

-- Creazione della relazione "Clienti"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: creazione-clienti.sql

CREATE TABLE Clienti ...

INSERT INTO Clienti ...
...

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

sqlite3 mag.db < creazione-clienti.sql[Invio]

Se si ottengono degli errori, si deve eliminare la relazione Clienti dalla base di dati contenuta nel file mag.db, utilizzando il programma sqlite3 in modo interattivo, quindi, dopo le correzioni, si deve riprovare.

Una volta eseguita l'operazione con successo, si stampi il file creazione-clienti.sql e lo si consegni per la correzione all'insegnante.

Nella valutazione viene controllata la correttezza del contenuto del file e la coerenza estetica nella scrittura delle istruzioni SQL.

612.7   Verifica sulla creazione e popolazione della relazione «Movimenti»

Prima di svolgere questa verifica, è necessario avere svolto quelle precedenti, delle quali valgono anche gli stessi requisiti.

Si crei il file creazione-movimenti.sql, inserendo le istruzioni necessarie a creare la relazione Movimenti, con il contenuto che si vede nella figura 612.12, tenendo conto che:

  1. l'attributo Movimento è di tipo INTEGER, non ammette il valore nullo e costituisce la chiave primaria;

  2. l'attributo Articolo è di tipo INTEGER e non ammette il valore nullo;

  3. l'attributo Causale è di tipo INTEGER e non ammette il valore nullo;

  4. l'attributo Data è di tipo DATE e non ammette il valore nullo;

  5. l'attributo Cliente è di tipo INTEGER;

  6. l'attributo Fornitore è di tipo INTEGER;

  7. l'attributo Quantita è di tipo NUMERIC a 15 cifre, di cui cinque sono usate per i decimali, e non ammette il valore nullo;

  8. l'attributo Valore è di tipo NUMERIC a 14 cifre, di cui due sono usate per i decimali, e non ammette il valore nullo.

Figura 612.12. Relazione Movimenti (Movimento, Articolo, Causale, Data, Cliente, Fornitore, Quantita, Valore).

Movimento Articolo Causale Data Cliente Fornitore Quantita Valore
1 2 1 2007-01-15 NULL 3 10 000 100,00
2 2 2 2007-01-16 2 NULL 1 000 10,00
3 102 1 2007-01-17 NULL 2 1 000 200,00
4 102 2 2007-01-18 1 NULL 100 20,00
5 401 1 2007-01-19 NULL 1 1 000 200,00
6 401 2 2007-01-20 3 NULL 200 40,00
7 401 4 2007-01-20 NULL 1 100 20,00
8 102 4 2007-01-20 NULL 2 100 20,00
9 601 1 2007-01-21 NULL 3 2 000 1 000,00
10 601 2 2007-01-25 1 NULL 1 000 500,00

Figura 612.13. Scheletro del file creazione-movimenti.sql, da completare.

-- Creazione della relazione "Movimenti"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: creazione-movimenti.sql

CREATE TABLE Movimenti ...

INSERT INTO Movimenti ...
...

Si ricorda che i valori numerici vanno indicati come sono, con l'accortezza di usare il punto per la separazione dei decimali; le date, come le stringhe (i valori testuali) vanno delimitate con apici singoli. In questo caso, quando viene a mancare il valore per il cliente o il fornitore, si inserisce il valore «nullo», che si scrive con la parola chiave NULL, come appare nella figura 612.12, senza usare apici.

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

sqlite3 mag.db < creazione-movimenti.sql[Invio]

Se si ottengono degli errori, si deve eliminare la relazione Movimenti dalla base di dati contenuta nel file mag.db, utilizzando il programma sqlite3 in modo interattivo, quindi, dopo le correzioni, si deve riprovare.

Una volta eseguita l'operazione con successo, si stampi il file creazione-movimenti.sql e lo si consegni per la correzione all'insegnante.

Nella valutazione viene controllata la correttezza del contenuto del file e la coerenza estetica nella scrittura delle istruzioni SQL.

612.8   Conclusione

Prima di passare al capitolo successivo, si deve realizzare un file contenente le istruzioni con cui creare e popolare le relazioni descritte in questo capitolo. In pratica, si tratta di copiare il contenuto dei file creazione-articoli.sql, creazione-causali.sql, creazione-fornitori.sql, creazione-clienti.sql e creazione-movimenti.sql, in un file completo, che deve essere chiamato magazzino.sql.

Una volta realizzato il file magazzino.sql, 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 è stato creato il file prova-creazione-articoli.sql, che a questo punto non serve più e va eliminato.

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 creazione_ed_eliminazione_delle_relazioni.htm

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

Valid ISO-HTML!

CSS validator!