Database: dal modello concettuale al modello logico relazionale

Nella teoria dei database relazionali è particolarmente importante il processo che permette di ottenere il modello logico a partire dal modello concettuale. Nella progettazione di una base di dati relazionale il modello concettuale di riferimento è lo schema E/R (Entity Relationship), da cui otteniamo il modello logico relazionale. Per intenderci, i database relazionali sono quelli che si interrogano con SQL.

Nella traduzione dal modello concettuale allo schema logico, vengono prima tradotte le entità. In particolare, per ogni entità si crea una tabella utilizzando per i campi gli attributi semplici dell’entità. La chiave della tabella è scelta tra le chiavi candidate dell’entità.

In seguito vengono tradotte le associazioni, che sono state introdotte in questo post. Per le associazioni vi sono due strategie, da utilizzare in base al tipo di associazione. Le associazioni, infatti, si possono inglobare nelle tabelle relative alle entità o si possono creare nuove tabelle. Nel caso di associazioni many-to-many si deve sempre creare una tabella, negli altri casi la relazione può essere conglobata nelle tabelle relative alle entità.

Il modello relazionale

Il modello relazionale è probabilmente il modello logico più diffuso nelle basi di dati, sicuramente il più studiato. Il modello relazionale si chiama così perché ogni tabella della basi di dati è una relazione, intesa nel senso della logica matematica. I valori assunti da una riga della tabella vengono denominati tuple o record. Nel modello relazionale assumono importanza fondamentale i vincoli che si possono avere all'interno delle relazioni o tra relazioni diverse. Se volessimo fare un riassunto con i concetti essenziali, dovremmo elencare almeno questi due vincoli:

  • Chiave Primaria. Si definisce chiave primaria un sottoinsieme (non ridondante) di attributi per cui ogni valore identifica univocamente ogni tupla della relazione. È importante notare come i valori di una chiave primaria devono sempre essere inseriti, si dice anche che non ammette valori null.

  • Chiave Esterna. Intuitivamente, una chiave esterna (foreign key in inglese) è un attributo (o un insieme di attributi) che collega una relazione ad un’altra, imponendo che ci sia una corrispondenza tra gli attributi comuni alle due tabelle. In particolare, il vincolo di integrità referenziale tra R1 ed R2 impone che se F è la chiave esterna di R2, allora tutti i valori di F che compaiono in R2 devono comparire come valori di chiave primaria in R1

Le regole di derivazione dal modello concettuale al modello logico

Considerando che per colonne si intendono gli attributi (i campi della tabella) e che per righe si intendono le tuple o record, si possono elencare 7 diverse regole di conversione che permettono di passare dal modello concettuale al modello logico in una base di dati relazionale. Le prime quattro regole possono essere riferite alla conversione delle entità, mentre le ultime tre riguardano le associazioni.

  1. Ogni entità diventa una tabella
  2. Gli attributi dell’entità diventano colonne della tabella
  3. Le colonne ereditano le caratteristiche degli attributi
  4. La chiave primaria dell’entità diventa la chiave della tabella
  5. Se l’associazione è 1 a N, nel lato N si aggiunge una colonna, corrispondente alla chiave primaria del lato 1. Tale colonna è la chiave esterna della relazione.
  6. Se l’associazione è 1 a 1, si può scegliere dove aggiungere la colonna (sempre individuata nella chiave primaria di una delle due tabelle).
  7. Se l’associazione è N a N, si aggiunge una terza tabella, che contiene le chiavi delle altre due tabelle.