Prima forma normale

MySql Settembre 27th, 2007

Con questo post inauguro una nuova sezione ovvero quella dedicata al Mysql. In particolare in questo articolo mi occuperò di definire e spiegare la prima forma normale (1NF) che è alla base di una buona progettazione di database.

Partiamo innanzitutto dalla definizione: ”Si dice che una base dati è in prima forma normale (1NF) se vale la seguente relazione per ogni relazione contenuta nella base dati: una relazione è in 1NF se e solo se
a)non presenta gruppi di attributi che si ripetono (ossia ciascun attributo è definito su un dominio con valori atomici)
b)esiste una chiave primaria (ossia esiste un insieme di attributi, che identifica in modo univoco ogni tupla della relazione)

Detto in parole più semplici, la definizione indica che non ci devono essere attributi (colonne) i cui valori non siano atomici cioè non suddivisibili.
Supponiamo per esempio che esista una colonna che riassuma gli ipotetici ordini di materiale: non sarebbe ammissibile avere una relazione (tabella) di questo tipo:

Magazzino 1 gennaio 50; febbraio 30
Magazzino 3 gennaio 20; marzo 50

In questo caso il secondo attributo vìola chiaramente la 1NF e deve essere scomposto in modo da ottenere la seguente tabella:

Magazzino 1 gennaio 50
Magazzino 1 febbraio 30
Magazzino 3 gennaio 20
Magazzino 3 marzo 50

La seconda parte della definizione indica che deve esistere una chiave primaria ovvero un attributo (o un insieme di attributi) tale che possa identificare univocamente ogni tupla (riga) della relazione. Nell’esempio sottostante viene riportata una tabella che vìola la seconda parte della 1NF:

Mario 10/02/2006
Mario 14/12/2002
Antonio 23/08/2005
Antonio 24/05/2004

In questo caso diventa impossibile distinguere le persone in quanto non è possibile definire una chiave primaria. E’ necessario aggiungere un nuovo attributo, ad es. il codice fiscale, che ci consente di identificare univocamente ogni persona nella tabella:

RSSMRA50A01G000X Mario 10/02/2006
RSSMRA52L05G000F Mario 14/12/2002
VRDNTN74C25G000V Antonio 23/08/2005
PTRNTN75D12G000Q Antonio 24/05/2004

Così facendo è possibile assegnare al campo codice fiscale il valore di chiave primaria.

Tags: , , , , , ,



Leave a Comment

Chiudi
Invia e-mail