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: 1NF, database, forma, MySql, normale, prima, progettazione
About