GeeksforGeeks
La Prima Forma Normale (1NF) non elimina la ridondanza, ma piuttosto, è che elimina i gruppi ripetuti.
Invece di avere più colonne dello stesso tipo di dati in un record, (0NF o forma non normalizzata) si rimuovono le informazioni ripetute in una relazione separata e le si rappresenta come righe. Questo è ciò che costituisce 1NF.
Seconda forma normale (2NF):
La seconda forma normale (2NF) si basa sul concetto di dipendenza funzionale completa. La seconda forma normale si applica alle relazioni con chiavi composte, cioè le relazioni con una chiave primaria composta da due o più attributi. Una relazione con una chiave primaria con un solo attributo è automaticamente in almeno 2NF. Una relazione che non è in 2NF può soffrire delle anomalie di aggiornamento.
Per essere in seconda forma normale, una relazione deve essere in prima forma normale e la relazione non deve contenere alcuna dipendenza parziale. Una relazione è in 2NF se non ha alcuna dipendenza parziale, cioè nessun attributo non primario (attributi che non fanno parte di alcuna chiave candidata) è dipendente da un sottoinsieme proprio di una chiave candidata della tabella.
In altre parole,
Una relazione che è in Prima Forma Normale e ogni attributo non chiave primaria è completamente dipendente funzionalmente dalla chiave primaria, allora la relazione è in Seconda Forma Normale (2NF).
Nota – Se il sottoinsieme appropriato della chiave candidata determina l’attributo non primario, si parla di dipendenza parziale.
La normalizzazione delle relazioni 1NF in 2NF comporta la rimozione delle dipendenze parziali. Se esiste una dipendenza parziale, rimuoviamo l’attributo o gli attributi parzialmente dipendenti dalla relazione mettendoli in una nuova relazione insieme a una copia del loro determinante.
Considerate gli esempi che seguono.
Esempio-1:
Considerate la tabella che segue.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Nota che, ci sono molti corsi che hanno la stessa tariffa. }
Qui,
COURSE_FEE non può decidere da solo il valore di COURSE_NO o STUD_NO;
COURSE_FEE insieme a STUD_NO non può decidere il valore di COURSE_NO;
COURSE_FEE insieme a COURSE_NO non può decidere il valore di STUD_NO;
Quindi,
COURSE_FEE sarebbe un attributo non primario, poiché non appartiene all’unica chiave candidata {STUD_NO, COURSE_NO} ;
Ma, COURSE_NO -> COURSE_FEE, cioè.e., COURSE_FEE dipende da COURSE_NO, che è un sottoinsieme proprio della chiave candidata. L’attributo non primario COURSE_FEE dipende da un sottoinsieme proprio della chiave candidata, che è una dipendenza parziale e quindi questa relazione non è in 2NF.
Per convertire la relazione di cui sopra in 2NF,
abbiamo bisogno di dividere la tabella in due tabelle come :
Tabella 1: STUD_NO, COURSE_NO
Tabella 2: COURSE_NO, COURSE_FEE
Table 1 Table 2STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 10002 C2 C2 15001 C4 C3 10004 C3 C4 20004 C1 C5 2000 2 C5
Nota – 2NF cerca di ridurre i dati ridondanti che vengono memorizzati. Per esempio, se ci sono 100 studenti che prendono il corso C1, non abbiamo bisogno di memorizzare la sua tassa come 1000 per tutti i 100 record, invece una volta possiamo memorizzarla nella seconda tabella come la tassa del corso C1 è 1000.
Esempio-2:
Considera le seguenti dipendenze funzionali nella relazione R (A, B, C, D )
AB -> C BC -> D
Nella relazione di cui sopra, AB è l’unica chiave candidata e non c’è dipendenza parziale, cioè, qualsiasi sottoinsieme corretto di AB non determina alcun attributo non primo.