Daniele Merli
a- a+

Concetti Generali

Un sistema relazionale e' un database che viene vistodall'utente come una collezione di tavole.
La tavola (table) e' l'unita' di base delmodello relazionale. Molti sistemi di gestione database comeDBIII ci obbligano ad avere una visione dell'insiememolto legato al livello fisico dei files che compongono ildatabase stesso.
In pratica dobbiamo sempre considerare i file .DBF (filedati) e quelli .NDX (file d'indice).
Molti prodotti definiti come relazionali non lo sono difatto se si considerano al loro livello interno.
Lo diventano nel momento in cui adottano un interfacciautente SQL.
A livello dilinguaggio SQL non dobbiamo preoccuparci come di fatto ilsistema informativo tratta i nostri dati a livellofisico.
Possiamo semplicemente decidere di aggiungere uno o piu'indici per sveltire l'accesso ai dati.
Come fara' SQL a utilizzarli possiamo dire che"sono fatti suoi".

In pratica il sistema informativo utilizzato cipermettera' di eseguire una suddivisione tra il livellofisico e quello logico.
Bisogna specificare che SQL e' possibile utilizzarlo siain modo interattivo che da linguaggio.
Vediamo inizialmente alcuni concetti teorici.
Dicevamo precedentemente che il database viene visto come uninsieme di tavole.
Una tavola non e' altro che un insieme di righe e dicolonne dove le prime sono i record e le seconde i vari campiche intendiamo trattare.

+-------------------------------------------+
| TAVOLA |
+-------+-------+---+-------+-------+-------+
Riga 1 | campo | campo | C | campo | campo | campo |
+-------+-------+ O +-------+-------+-------+
Riga 2 | Mario | Volpe | L | Roma | Asti | 16100 |
+-------+-------+ O +-------+-------+-------+
Riga 3 | campo | campo | N | campo | campo | campo |
+-------+-------+ N +-------+-------+-------+
Riga n | ..... | ..... | A | ..... | ..... | ..... |
+-------+-------+---+-------+-------+-------+


Facciamo subito un esempio.
Supponiamo di avere una tavola che rappresenta i clienti diuna ditta XXXXX composta dal numero dell'utente (che deveessere unico), dal nome, dall'indirizzo e dallacitta'.

TAVOLA A
Num. # Nome Indirizzo Citta'
-------------------------------------
A001 Rossi V.Roma Torino
A002 Bianchi V.Trento Milano
A003 Verdi V.Trieste Genova
.... ....... ......... ......

Un' altra tavola potrebbe essere relativa ai prodottitrattati dalla nostra ditta XXXXX, composta anche questa daun numero d'articolo unico, dal nome del prodotto e dalprezzo.

TAVOLA B
Num. # Articolo Prezzo
-----------------------------
B001 Chiodo 150
B002 Bullone 300
B003 Dado 120
.... ....... ...

Una terza tavola potrebbe essere quella destinata allamemorizzazione delle vendite.
In pratica risultera' essere una connessione delle duetavole precedenti.

TAVOLA C
Cliente Articolo Pezzi venduti
----------------------------------
A001 B001 1500
A001 B002 5000
A001 B003 5000
A002 B003 1000
A003 B002 7000
A003 B003 3500

Le prime due tavole possono essere definite entita'mentre la terza relazione delle prime due.
Senza fare ancora nessun riferimento al linguaggio SQLpotremmo definire le tavole nel seguente modo.

CREA TAVOLA A ( NUM CHAR(5),NOME CHAR(20),INDIRIZZO CHAR(20),CITTA CHAR(20) );CREA TAVOLA B( ANUM CHAR(5),ARTICOLO CHAR(30),PREZZO INTEGER );CREA TAVOLA C( NUM CHAR(5),ANUM CHAR(5),VENDUTI INTEGER );



I dati delle tabelle precedenti potrebbero essere gestite alivello fisico mediante file dati, ed eventualmente indici,differenti. 
L'implementazione delle tavole create comenell'esempio precedente ci mostra come di fatto e'possibile creare una descrizione logica del modello in modoindipendente dal suo livello fisico.

Potremmo suddividere i tipi di tavole in due classi.
La prima e' costituito dalle tavole di base (base table)che sono in pratica tavole reali esistenti fisicamente comefiles e come record salvati in questi.
Al contrario il secondo tipo e' costituito da tavolevirtuali che di fatto non esistono a livello fisico ma che simostrano all'utente come se di fatto esistessero.
Vedremo successivamente di approfondire questi concettiparlando delle tavole di base e delle viste (view).
Iniziamo ora a considerare le problematiche legate al querydi un sistema di database.
Parleremo successivamente delle operazioni legate allacreazione e alla modifica.