Progettazione Di Un Database Relazionale

LA PROGETTAZIONE DI UN DATABASE RELAZIONALE

Introduzione

Si definisce DATABASE un insieme di file (tabelle) in cui i dati,relativi a determinate entità (animali, persone, prodotti, fatture, ecc.) sono organizzati secondo i seguenti criteri:

– ciascun elemento appartenente all'entità viene descritto da un RECORD (riga);
– ogni record è suddiviso in CAMPI (colonne), ciascuno dei quali contiene un attributo (caratteristica) della suddetta entità.

Le informazioni e le caratteristiche del DB sono gestite attraverso il DBMS (Data Base Management System) che è il programma in grado di generare ed elaborare uno o più DATABASE.
Cercando di ottimizzare le prestazioni dei programmi DBMS è necessario eliminare i dati ripetuti in modo che un’informazione sia contenuta in un solo campo di una sola tabella. Esempio:

pnHr9T0Xp

In questo caso i colori mostrano i dati che, per quanto necessari per attribuire le informazioni ai soggetti ed alle materie (entità), risultano duplicati all'interno della stessa tabella.
Se in aggiunta volessimo indicare più voti per materia, come realmente accade, il livello di duplicazione aumenta:

pl2Ckc2Xp

Occorre quindi ovviare a questo inconveniente progettando una struttura dati in grado di archiviare le informazioni in contenitori differenti, in base alla loro natura: le cosiddette TABELLE, e di mettere queste tabelle in relazione tra loro, secondo le necessità, utilizzando i RDBMS (Relational Data Base Management System).

Il modello relazionale

Il modello relazionale garantisce che le informazioni siano ricondotte a “classi di entità” che devono essere descritte in maniera indipendente l’una dalle altre. In questo modo:

– Garantisce espandibilità e flessibilità nella costruzione del modello e delle applicazioni che ne derivano
– Elimina la necessità di duplicare i dati

Nel nostro caso Alunno e Materia sono classi di entità che devono essere descritte indipendentemente l’una dall'altra
Il modello relazionale presuppone inoltre il riconoscimento del tipo di legame, cioè di relazione, che lega le diverse entità.

Costruire un database relazionale significa quindi:

– Individuare i dati elementari (dati non ulteriormente suddivisibili, es il dato “Voto”)
– Identificare le entità (tabelle)
– Individuare, per ogni entità, la CHIAVE (dato che identifica in modo univoco il singolo elemento)
– Scoprirne le relazioni
– Creare un modello della realtà che faccia riferimento alle entità individuate ed alle loro relazioni

Le Tabelle

Le informazioni relative ad una classe di entità vengono memorizzate in una struttura chiamata TABELLA. Questa è organizzata in righe (RECORD) e colonne (CAMPI).

– Ogni campo identifica una proprietà dell’entità ed assume in ogni record un valore specifico
– Ogni riga identifica un elemento dell’insieme delle entità. In ogni riga viene registrata l’informazione relativa a una specifica entità

La chiave primaria

Separando le informazioni in tabelle per classi omogenee, è necessario poter identificare in maniera univoca ogni record della tabella principale della relazione: questo compito è svolto dalla CHIAVE PRIMARIA.
La chiave primaria garantisce l’unicità del record: non ci possono essere due record di una tabella con la stessa chiave primaria.
Le tabelle collegate (relazionate, messe in relazione) conterranno un campo dove viene indicata la chiave primaria del record della tabella principale. Questo campo viene chiamato CHIAVE ESTERNA.

Gli indici

Una tabella è naturalmente ordinata:

– secondo l’ordine di inserimento dei record se la tabella non ha una chiave primaria
– secondo la chiave primaria se esiste

Tuttavia i record di una tabella devono poter essere ordinati secondo un qualsiasi campo, in senso crescente o decrescente; questa funzione è svolta dagli indici:
– Un INDICE è uno strumento che mantiene costantemente ordinati i record di una tabella secondo i campi su cui è applicato

Le relazioni

Si distinguono:
– Relazioni “uno a uno”: ad ogni record di una tabella principale è associato uno e un solo record della tabella relazionata
– Relazioni “uno a molti”: ad ogni record di una tabella possono essere associati nessuno o molti record di una tabella collegata, ma ad ogni record di questa è associato sempre un unico record di quella d’origine
– Relazioni “molti a molti”: ogni record di una tabella può essere associato a molti record della tabella collegata, e viceversa. Quest’ultima relazione è da evitare per non compromettere le prestazioni del RDBMS, pertanto è opportuno che da eventuali relazioni “molti a molti” si creino tabelle intermedie di collegamento che mettano in relazione le due tabelle di origine.

Iter di progettazione

Riprendiamo i concetti illustrati ed applichiamoli al nostro semplice esempio. I concetti chiave sono:

– ENTITA’
– TABELLE
– RELAZIONI
– CHIAVE PRIMARIA, CHIAVE ESTERNA
– INDICI

Le ENTITA’ che possiamo individuare dalla nostra “pagella iniziale” sono 3: “Alunno”, “Materia”, “Voto e data”

pl2Ckc2Xp

Quindi:

pnU9ZLwsp

E’ facile osservare che non sono state riportate le “ripetizioni”, sono quindi scomparsi i molteplici “Mario Rossi” e le molteplici “Materie”.
Dalle entità dobbiamo derivare le TABELLE. Queste raccoglieranno i dati elementari (che non si possono ulteriormente suddividere) relativi all’entità cui si riferiscono. Esempio: l’entità “Alunno” conterrà sicuramente, di minima, il dato “Nome_Alunno”. Ulteriore dato sarà la “Classe” (identifica la classe frequentata nel nostro caso ipotizzando un unico corso ed un'unica sezione). Quindi otteniamo:

pnG5Wp0Wp

Successivo passo consiste nell’individuare e definire le relazioni. Nel nostro caso, ad ogni alunno corrisponderà l’insieme delle materie. Siamo quindi in presenza di una corrispondenza “uno a molti” e per ogni Alunno/Materia corrisponderanno più “Voto/Data”.

Individuate le relazioni che rispondono all’obiettivo che vogliamo ottenere, resta da attribuire le CHIAVI primarie ed esterne in modo che le relazioni vengano soddisfatte. Otteniamo così anche gli INDICI:

pniLW0MVp

Realizzazione

Dal disegno teorico, passiamo a realizzare il DB. Utilizziamo come riferimento il diffusissimo Access che è il DBMS disponibile in Office e nato per gestire delle grosse quantità di dati.
Access permette di creare le tabelle, definire chiavi e dati, creare le relazioni. Non entriamo nell’applicativo ma illustriamo il disegno finale delle relazioni del nostro DB.

pmvmiqPup
Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License