1NF vs 2NF vs 3NF
La normalizzazione è un processo che viene eseguito per ridurre al minimo le ridondanze presenti nei dati nei database relazionali. Questo processo dividerà principalmente tabelle di grandi dimensioni in tabelle più piccole con meno ridondanze. Queste tabelle più piccole saranno correlate tra loro attraverso relazioni ben definite. In un database ben normalizzato, qualsiasi alterazione o modifica dei dati richiederà la modifica di una sola tabella. La prima forma normale (1NF), la seconda forma normale (2NF) e la terza forma normale (3NF) sono state introdotte da Edgar F. Codd, che è anche l'inventore del modello relazionale e del concetto di normalizzazione.
Cos'è 1NF?
1NF è la prima forma normale, che fornisce l'insieme minimo di requisiti per la normalizzazione di un database relazionale. Una tabella conforme a 1NF assicura che rappresenti effettivamente una relazione (cioè non contiene record che si ripetono), ma non esiste una definizione universalmente accettata per 1NF. Una proprietà importante è che una tabella conforme a 1NF non può contenere attributi con valore relazionale (ovvero tutti gli attributi dovrebbero avere valori atomici).
Cos'è 2NF?
2NF è la seconda forma normale utilizzata nei database relazionali. Affinché una tabella sia conforme a 2NF, dovrebbe essere conforme a 1NF e qualsiasi attributo che non fa parte di alcuna chiave candidata (cioè attributi non primi) dovrebbe dipendere completamente da una qualsiasi delle chiavi candidate nella tabella.
Cos'è 3NF?
3NF è la terza forma normale utilizzata nella normalizzazione del database relazionale. Secondo la definizione di Codd, si dice che una tabella sia in 3NF, se e solo se, quella tabella è nella seconda forma normale (2NF), e ogni attributo nella tabella che non appartiene a una chiave candidata, dovrebbe dipendere direttamente su ogni chiave candidata di quella tabella. Nel 1982 Carlo Zaniolo ha prodotto una definizione diversa per 3NF. Le tabelle conformi alla 3NF generalmente non contengono anomalie che si verificano durante l'inserimento, l'eliminazione o l'aggiornamento di record nella tabella.
Qual è la differenza tra 1NF e 2NF e 3NF?
1NF, 2NF e 3NF sono forme normali utilizzate nei database relazionali per ridurre al minimo le ridondanze nelle tabelle. 3NF è considerata una forma normale più forte della 2NF ed è considerata una forma normale più forte della 1NF. Pertanto, in generale, ottenere una tabella conforme al modulo 3NF richiederà la scomposizione di una tabella che si trova nella 2NF. Allo stesso modo, ottenere una tabella che sia conforme alla 2NF richiederà la scomposizione di una tabella che si trova nella 1NF. Tuttavia, se una tabella conforme a 1NF contiene chiavi candidate composte solo da un singolo attributo (cioè chiavi candidate non composite), tale tabella rispetterebbe automaticamente 2NF. La scomposizione delle tabelle comporterà ulteriori operazioni di join (o prodotti cartesiani) durante l'esecuzione delle query. Ciò aumenterà il tempo di calcolo. D' altra parte, le tabelle che soddisfano le forme normali più forti avrebbero meno ridondanze rispetto alle tabelle che soddisfano solo le forme normali più deboli.