1NF vs 2NF vs 3NF
La normalizzazione è un processo che viene eseguito per minimizzare 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 modifica o modifica nei 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 il concetto di normalizzazione.
Cos'è 1NF?
1NF è il primo modulo normale, che fornisce il set minimo di requisiti per la normalizzazione di un database relazionale. Una tabella conforme a 1NF assicura che rappresenti effettivamente una relazione (ovvero non contiene alcun record che si sta ripetendo), ma non esiste una definizione universalmente accettata per 1NF. Una proprietà importante è che una tabella conforme a 1NF non può contenere alcun attributo che è valutato relazionale (cioè tutti gli attributi dovrebbero avere valori atomici).
Che cos'è 2NF?
2NF è la seconda forma normale utilizzata nei database relazionali. Affinché una tabella sia conforme a 2NF, deve essere conforme a 1NF e qualsiasi attributo che non fa parte di alcuna chiave candidata (ovvero attributi non principali) deve dipendere completamente da una qualsiasi delle chiavi candidate nella tabella.
Che cos'è 3NF?
3NF è la terza forma normale utilizzata nella normalizzazione del database relazionale. Secondo la definizione del Codd, una tabella si dice che 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 candidato di quel tavolo. Nel 1982 Carlo Zaniolo ha prodotto una definizione diversa per la 3NF. Le tabelle conformi al 3NF in genere non contengono anomalie che si verificano durante l'inserimento, l'eliminazione o l'aggiornamento dei record nella tabella.
Qual è la differenza tra 1NF e 2NF e 3NF?
1NF, 2NF e 3NF sono moduli normali utilizzati nei database relazionali per ridurre al minimo le ridondanze nelle tabelle. 3NF è considerato come una forma normale più forte rispetto al 2NF, ed è considerato come una forma normale più forte di 1NF. Pertanto, in generale, ottenere una tabella conforme al modulo 3NF richiederà la decomposizione di una tabella che si trova in 2NF. Allo stesso modo, ottenere una tabella conforme a 2NF richiederà la decomposizione di una tabella che si trova nella 1NF. Tuttavia, se una tabella che soddisfa 1NF contiene chiavi candidate che sono costituite solo da un singolo attributo (cioè chiavi candidate non composite), tale tabella si conformerebbe automaticamente a 2NF. La decomposizione di tabelle comporterà operazioni di join aggiuntive (o prodotti cartesiani) durante l'esecuzione di query. Ciò aumenterà il tempo di calcolo. D'altro canto, le tabelle che rispettano le forme normali più forti avrebbero meno ridondanze rispetto alle tabelle che rispettano solo le forme normali più deboli.