Relazioni da uno a molti in un database

Sommario:

Relazioni da uno a molti in un database
Relazioni da uno a molti in un database
Anonim

Una relazione uno-a-molti in un database si verifica quando ogni record nella Tabella A può avere molti record collegati nella Tabella B, ma ogni record nella Tabella B può avere solo un record corrispondente nella Tabella A.

Una relazione uno-a-molti in un database è la progettazione di database relazionali più comune ed è al centro di una buona progettazione.

I database possono anche implementare una relazione uno-a-uno e una relazione molti-a-molti.

Image
Image

Esempio di relazione uno-a-molti

Considera la relazione tra un insegnante e i corsi che insegna. Un insegnante può insegnare a più classi, ma il corso non avrebbe lo stesso rapporto con l'insegnante.

Pertanto, per ogni record in una tabella Insegnanti, potrebbero esserci molti record nella tabella Corsi. Questo esempio illustra una relazione uno-a-molti: un insegnante a più corsi.

Perché è importante stabilire una relazione uno-a-molti

Per rappresentare una relazione uno-a-molti, hai bisogno di almeno due tabelle. Vediamo perché.

Adesione al primo disegno della forma normale

Forse abbiamo creato una tabella in cui vogliamo registrare il nome e i corsi tenuti. Potremmo progettare una tabella Insegnanti e Corsi come questa:

ID_insegnante Nome_insegnante Corso
Insegnante_001 Carmen Biologia
Insegnante_002 Veronica Matematica
Insegnante_003 Jorge Inglese

E se Carmen insegnasse due o più corsi? Abbiamo due opzioni con questo design. Potremmo aggiungerlo al record esistente di Carmen, in questo modo:

ID_insegnante Insegnante_Nome Corso
Insegnante_001 Carmen Biologia, matematica
Insegnante_002 Veronica Matematica
Insegnante_003 Jorge Inglese

Tuttavia, il design sopra non è flessibile e potrebbe causare problemi in seguito durante l'inserimento, la modifica o l'eliminazione dei dati. Rende difficile la ricerca dei dati.

Questo progetto viola anche il primo principio di normalizzazione del database, First Normal Form (1NF), che afferma che ogni cella della tabella dovrebbe contenere un singolo dato separato.

La seconda regola della forma normale

Un' altra alternativa di design potrebbe essere quella di aggiungere un secondo record per Carmen:

Insegnante_ID Insegnante_Nome Corso
Insegnante_001 Carmen Biologia
Insegnante_001 Carmen Matematica
Insegnante_002 Veronica Matematica
Insegnante_003 Jorge Inglese

Questo approccio aderisce a 1NF ma è ancora una progettazione del database scadente perché introduce ridondanza e potrebbe gonfiare inutilmente un database di grandi dimensioni. Ancora più importante, i dati potrebbero diventare incoerenti.

Ad esempio, cosa succederebbe se il nome di Carmen fosse cambiato? Qualcuno che lavora con i dati potrebbe aggiornare il suo nome in un record e non aggiornarlo nel secondo record.

Questo design viola lo standard Second Normal Form (2NF), che aderisce a 1NF e deve anche evitare la ridondanza di più record. La regola 2NF ottiene questo risultato separando sottoinsiemi di dati in più tabelle e creando una relazione tra loro.

Come progettare un database con relazioni uno-a-molti

Per implementare una relazione uno-a-molti nella tabella Insegnanti e Corsi, dividi le tabelle in due e collegale utilizzando una chiave esterna.

Qui, abbiamo rimosso la colonna Corso nella tabella Insegnanti:

Insegnante_ID Insegnante_Nome
Insegnante_001 Carmen
Insegnante_002 Veronica
Insegnante_003 Jorge

Ed ecco la tabella dei Corsi. Nota che la sua chiave esterna, Teacher_ID, collega un corso a un insegnante nella tabella Insegnanti:

ID_corso Nome_corso ID_insegnante
Corso_001 Biologia Insegnante_001
Corso_002 Matematica Insegnante_001
Corso_003 Inglese Insegnante_003

Abbiamo sviluppato una relazione tra la tabella Docenti e la tabella Corsi utilizzando una chiave esterna. Questa disposizione ci dice che Carmen insegna sia biologia che matematica e che Jorge insegna inglese.

Possiamo vedere come questo design eviti eventuali ridondanze, consenta ai singoli insegnanti di insegnare più corsi e implementi una relazione uno-a-molti.

Consigliato: