Sistema informativo e progettazione database
Progettazione Logica
Progettazione logica
Si fa trovando le tabelle e le relazioni tra le tabelle.
Una Tabella è una struttura di dati suddivisa in
- colonne o campi e
- righe o record
Come per l’entità, anche qui, esiste il concetto di chiave primaria la cui definizione per la tabella diventa:
Chiave Primaria: è il numero minimo di campi di una tabella il cui scopo è quello di identificare univocamente ogni record della tabella.
Nella progettazione logica esiste anche il concetto di chiave esterna la cui definizione è:
Chiave Esterna: è un campo di una tabella il cui scopo è quello di identificare univocamente ogni record di una tabella esterna
Per capire il concetto di chiave esterna e da quale esigenza nasce si veda, prima di continuare, il paragrafo sulla ridondanza.
Le tabelle si descrivono tramite uno schema detta appunto “schema della tabella”, che si fa scrivendo il nome della tabella e, tra parentesi, l’elenco dei campi separati da virgola.
Inoltre la chiave primaria va sottolineata e le chiavi esterne (se ci sono) vanno sottolineate tratteggiate
Es.
persone(id_persona, nome, cognome, idcomune)
Una relazione è un’interrelazione o legame tra due tabelle. Le relazioni possono essere:
- uno a uno (1-1)
- uno a molti (1-M)
- molti a molti (M-N)
Si ha una relazione uno a uno tra due tabelle quando a una riga della prima tabella corrisponde o può corrispondere una riga della seconda e vale il viceversa.
Si ha un’associazione uno a molti tra due tabelle quando a una riga della prima tabella corrispondono o possono corrispondere più righe della seconda e non vale il viceversa.
Si ha un’associazione molti a molti tra due tabelle quando a una riga della prima tabella corrispondono o possono corrispondere più righe della seconda e vale il viceversa (e cioè a una riga della seconda tabella corrispondono o possono corrispondere più righe della prima).
Come si vede, le definizioni di relazione tra tabelle sono molto simili alle definizioni di associazioni tra Entità, basta sostituire la parola istanza con riga, la parola Entità con tabella e la parola Associazione con relazione.
Note sulla terminologia: A volte qualcuno chiama le Associazioni tra Entità col nome di relazioni, qui si preferisce distinguere i due termini e usare la parola relazione per il legame che intercorre tra le tabelle. La parola relazione inoltre è spesso usata anche per indicare le tabelle (noi non la useremo con questo significato tranne nelle soluzioni delle prove di esame di Stato in cui appunto per relazione si intende la tabella). Il motivo si capirà con lo studio dell’algebra relazionale.
Le relazioni tra le tabelle possono essere descritte in vari modi come ad esempio tramite lo schema grafico che viene generato dalla pagina relazioni di MS-Access(vedi esempio) ; qui invece si preferisce usare il seguente schema che risulta più semplice e immediato (anche perché non ha senso fare uno schema grafico che poi sarà molto simile allo schema concettuale precedentemente creato):
Tabella 1 | Tabella 2 | Relazione | Tramite |
---|---|---|---|
… | … | … | … |
… | … | … | … |
Nella colonna relazione si inserirà 1-1, 1-M oppure M-N, mentre nel tramite si inserisce il nome della chiave esterna che collega le due tabelle nel caso di relazione 1-1 o 1-M oppure il nome della tabella intermedia nel caso di relazione M-N.
La progettazione logica si può fare in due modi:
1)Traducendo dalla progettazione concettuale oppure
2)Se la progettazione concettuale non è stata già fatta potrebbe essere più semplice iniziare con la progettazione logica che ti fa ragionare già con le tabelle che ti serve creare. La cosa importante è però che comunque la progettazione logica e quella concettuale devono corrispondere esattamente secondo le regole della traduzione. Il consiglio, se si parte dalla progettazione logica, è pensare anche dal punto di vista concettuale: cioè ad una tabella deve corrispondere un’entità e l’entità deve soddisfare la definizione data prima (nel paragrafo corrispondente). Inoltre un campo deve essere sempre un attributo semplice (non una lista) e non deve creare ridondanza; ogni campo che crea ridondanza si deve risolvere (vedi paragrafo sulla ridondanza)
Si noti bene che viceversa, se si parte dalla progettazione concettuale, si deve pensare anche dal punto di vista logico e cioè in particolare, a cosa andrà a essere inserito nelle tabelle (corrispondenti alle entità create) e quindi in ogni singola colonna (che deriverà da ogni attributo dell’entità).