UN CASO PARTICOLARE MOLTI A MOLTI

In fase di progettazione, quando si definisce lo schema della base di dati, si incontrano tabelle con la relazione di tipo molti a molti. Ma, questo tipo di relazioni non possono essere create né con Access, né con altri RDBMS, esistono solo nella seconda fase.
Quando si incontrano relazioni molti a molti, queste devono essere trasformate. Si deve usare il seguente metodo: considerare la relazione molti a molti come l’unione di due relazioni, uno a molti e molti a uno (come affermato nel paragrafo MOLTI A MOLTI). È necessario aggiungere una tabella in più all’archivio, che memorizzi la relazione in questione. Infine si devono creare due relazioni tra le tabelle iniziali e quella nuova. Anche questa volta conviene vedere il tutto con un esempio.

ESEMPIO. Trasformazione relazione molti a molti.
Si vuole rappresentare la relazione tra studenti e corsi, intesi come materie seguite dagli studenti. Uno studente può seguire più corsi, un corso può essere seguito da più studenti: la relazione è molti a molti. In fase di progettazione questo non è un problema, anzi è la definizione corretta.
La figura 5.06 rappresenta le tabelle Studenti e Corsi, senza la relazione.
 

 
FIG. 5.06
 

È necessario creare la relazione per rispondere a domande del tipo: “quali corsi segue lo studente Rossi?” “Quali studenti seguono il corso Analisi I?”.
Per creare una relazione si deve aggiungere un campo nella tabella lato molti (chiave esterna), il problema è che entrambe le tabelle in questione sono il lato molti della relazione.
Proviamo ad aggiungere la chiave esterna nella tabella studenti. ERRORE: il campo Materia, in questo modo, verrebbe a contenere più valori (vedremo nel prossimo capitolo che non deve succedere), figura 5.07.
 

 
FIG. 5.07
 

Proviamo ad aggiungere la chiave esterna nella tabella corsi. ERRORE: il campo Matricola contiene più valori, figura 5.08.
 

 
FIG. 5.08
 

Per risolvere questa situazione si deve creare una terza tabella che memorizzi la relazione. Questa tabella deve contenere le chiavi esterne delle due relazioni uno a molti (che insieme compongono la relazione molti a molti). Sarà inoltre in relazione con ognuna delle tabelle di partenza, rappresenterà sempre il lato molti. Quindi si crea una nuova tabella con due campi, che sono le chiavi esterne delle tabelle iniziali.
La chiave primaria della tabella relazione sono le due chiavi esterne insieme, contemporaneamente. Questo serve per evitare ripetizioni nei record della relazione.
La figura 5.09 visualizza la tabella relazione, con alcuni record.
 

 
FIG. 5.09
 

Dopo aver creato la nuova tabella, si devono definire due relazioni uno a molti tra le tabelle iniziali (lato uno) e quella nuova (lato molti). La figura 5.10 visualizza il risultato finale della trasformazione.
 

 
FIG. 5.10