vuoi
o PayPal
tutte le volte che vuoi
CLASSICLASSI INF SUP
MODELLONOME | CC | A12OKMH | URB | LIT | GGC | NOCASA | USO |
---|---|---|---|---|---|---|---|
panda 750 l | 769 | 6.2 | 7414 | 0 | 3 | utili | |
panda 1000 s | 999 | 6.5 | 6.3 | 9744 | 0 | 3 | utili |
starossa | 4942 | 11.8 | 23.7 | 186714 | 540 | 2 | sport |
412 | 4942 | 15.9 | 29.1 | 165324 | 180 | 2 | sport |
bx 19 trd diesel | 1905 | 6.2 | 6.5 | 18233 | 0 | 0 | lusso |
cx 25 limousine | 2500 | 7.4 | 8.5 | 30094 | 0 | lusso | |
xyz | 4321 | 10.2 | 10 | 654321 | 17 | 4 | fstra |
panda d diesel | 1301 | 6.5 | 5.5 | 9980 | 0 | 3 | utili |
cx25 trd turbod | 2500 | 7.4 | 8.5 | 31825 | 0 | sport | |
cx 25 gti turbo | 2500 | 8.9 | 41052 | 0 | sport | ||
croma td | 2445 | 6.3 | 8.4 | 25250 | 60 | 3 | lusso |
2.1 L'inserimento dei dati
Abbiamo premesso che, non essendo tra i nostri obiettivi quello di discutere di problematiche inerenti alla progettazione delle tabelle, non entreremo nel merito di questo argomento e di altri collegati. Riportiamo comunque, a titolo di esempio, i comandi SQL utilizzati per la creazione.
el'inserimento dei dati che compongono le tabelle di cui sopra, senza accennare alle ragioni che hanno portato a questa organizzazione. La comprensione della sequenza di tali comandi insieme ad altre considerazioni, sarà utile a quanti vorranno eseguire analoghe operazioni.
La prima osservazione riguarda la sequenza dei comandi che abbiamo utilizzato. Questa si compone di:
- un comando di cancellazione di una relazione DROP TABLE;
- un comando di creazione CREATE TABLE;
- un insieme di comandi di inserimento INSERT, uno per ogni tupla della corrispondente relazione.
Tale sequenza garantisce sempre il corretto inserimento dei dati di cui sopra. Se infatti, nella nostra base di dati si trova già una tabella identica, il solo comando CREATE produce un errore, mentre i successivi comandi INSERT agirebbero comunque, provocando l'inserimento di tuple che se già inserite, verrebbero così duplicate (*). Notiamo nel comando CREATE TABLE,-------(*) uno dei principi della teoria relazionale.
Accanto al nome di ciascuna colonna, la specifica dell'attributo per quella colonna. Un approfondimento di questo verrà svolto più avanti.
Con il comando INSERT, procediamo all'inserimento dei valori che compongono ciascuna tupla; le costanti alfanumeriche sono racchiuse tra apici, i valori non disponibili, quelli che appaiono "vuoti" nelle tabelle, utilizzano il valore NULL appositamente deputato a questo.
Eliminiamo la relazione classi (se esistente):
DROP TABLE classi;
Procediamo alla creazione della relazione classi che si compone degli attributi classi (un carattere numerico), inf e sup (ciascuna contenente dei numeri al massimo di sette caratteri):
CREATE TABLE classi (classi NUMBER(1), inf NUMBER(7), sup NUMBER(7));
Inseriamo i dati nella relazione appena creata:
INSERT INTO classi VALUES(1,5000,7000);
INSERT INTO classi VALUES(2,7001,10000);
...
INSERT INTO classiVALUES(6,30001,100000);
Eliminiamo la relazione modello:
DROP TABLE modello;
Creiamo la relazione modello:
CREATE TABLE modello (nome CHAR(16) NOT NULL,cc NUMBER(5),a120kmh NUMBER(4,1),urb NUMBER(4,1),lit NUMBER(11),ggc NUMBER(4),nocasa CHAR(1) NOT NULL,uso CHAR(5));
Inseriamo i dati della relazione:
INSERT INTO modello VALUES('126',652,null,6.8,5650,0,'3','utili');
. . . . . . . . . .
INSERT INTO modello VALUES('croma td s',2445,6.3,8.4,25250,60,'3','lusso');
Alcune considerazioni sul comando CREATE. La prima riguarda il significato della parola NOTNULL che si trova associata ai due attributi nome e nocasa: questo deve essere fatto in tutti i casi incui si voglia condizionare l'operazione di inserimento della tupla, alla presenza di un valorecorrispondente. Se tale valore non e' presente, ovvero viene assegnato con NULL, l'istruzioneINSERT non viene eseguita.
2.2 Tipologie di dati
La seconda riguarda i termini (CHAR,
- NUMERICO
- number(w,d)
- decimal
- longfloat(w,d)
- integer(w)
- smallint
- DATA
- date
- CARATTERE
- char(w)
Le lettere "w" e "d" indicano rispettivamente il numero totale di caratteri e, dove presente, le posizioni riservate alla parte decimale. Il valore per "d" non è obbligatorio e, se mancante, non produrrà la virgola.
Il tipo "smallint" viene utilizzato per valori numerici che occupano 16 bit (interi <= 32767 e interi >= -32768).
Per il tipo "char", il valore di "w" deve essere < 240.
Il tipo "long" può essere utilizzato soltanto in un attributo per ciascuna relazione e si riferisce a stringhe più lunghe di 240 caratteri.
Data la quantità e le differenze dei software oggi disponibili, si consiglia di consultare i manuali del prodotto in uso per ottenere maggiori informazioni su tipologie di dati non discusse o da approfondire.
non e' possibile descrivere univocamente la procedura necessaria alla cancellazione/creazione di relazioni ovvero all'inserimento di tuple. In alcuni casi si procede con gruppi di istruzioni raccolte in un file, in altri saranno disponibili procedure interattive controllate da appositi menu. Se per esempio, stiamo utilizzando Oracle in una delle versioni 4 o 5 con il sistema operativo Ms-Dos, le istruzioni di cui sopra possono essere scritte, in formato ASCII, in un file con nome di file Dos ed estensione rispettivamente .UFI o .SQL tramite qualsiasi programma di videoscrittura ed eseguite da ambiente UFI o SQL con il comando: START nome_di_file (senza estensione) L'ultima avvertenza riguarda una caratteristica, che avrà notevoli conseguenze in seguito, dell'ambiente relazionale: si tenga presente che, indipendentemente dal prodotto utilizzato, tutta l'informazione gestita dal DBMS, è a sua volta organizzata in relazioni. Avremo così, ad esempio, unaLa relazione che contiene i nomi di tutte le relazioni gestite da quel RDBMS è ottenibile da ambiente UFI o SQL con il comando:
SELECT nome_relazione FROM relazioni
Un'altra relazione che contiene per ciascuna relazione le informazioni associate in termini di attributi e natura degli attributi ad ogni relazione è ottenibile con il comando:
SELECT nome_relazione, nome_attributo, natura_attributo FROM informazioni_relazioni
Nel caso di Oracle, si prenda nota dei nomi degli attributi della relazione TAB.