La prima forma normale (1NF) non elimina la ridondanza, ma piuttosto elimina i gruppi ripetitivi. Invece di avere più colonne dello stesso tipo di dati in un record, (0NF o modulo non normalizzato) rimuovi le informazioni ripetute in una relazione separata e le rappresenti come righe. Questo è ciò che costituisce 1NF.
Seconda forma normale
La seconda Forma Normale (2NF) si basa sul concetto di dipendenza pienamente funzionale. La seconda Forma Normale si applica alle relazioni con chiavi composte, cioè alle relazioni con una chiave primaria composta da due o più attributi. Una relazione con una chiave primaria ad attributo singolo è automaticamente almeno in 2NF. Una relazione che non è in 2NF potrebbe soffrire di anomalie di aggiornamento. Per essere nella seconda forma normale, una relazione deve essere nella prima forma normale e non deve contenere alcuna dipendenza parziale. Una relazione è in 2NF se non ha dipendenza parziale, cioè nessun attributo non primo (attributi che non fanno parte di alcuna chiave candidata) dipende da qualsiasi sottoinsieme proprio di qualsiasi chiave candidata della tabella. In altre parole,
Una relazione che è nella Prima Forma Normale e ogni attributo diverso dalla chiave primaria dipende completamente dal punto di vista funzionale dalla chiave primaria, quindi la relazione è nella Seconda Forma Normale (2NF).
Nota - Se il sottoinsieme corretto della chiave candidata determina un attributo non primo, viene chiamato dipendenza parziale . IL normalizzazione delle relazioni 1NF con 2NF implica il rimozione delle dipendenze parziali . Se esiste una dipendenza parziale, rimuoviamo gli attributi parzialmente dipendenti dalla relazione inserendoli in una nuova relazione insieme a una copia del loro determinante. Considera gli esempi forniti di seguito.
Esempio 1: Considera la tabella come segue.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
{Nota che ci sono molti corsi con lo stesso costo. } Qui, COURSE_FEE non può da solo decidere il valore di COURSE_NO o STUD_NO; COURSE_FEE insieme a STUD_NO non possono decidere il valore di COURSE_NO; COURSE_FEE insieme a COURSE_NO non possono decidere il valore di STUD_NO; Quindi, COURSE_FEE sarebbe un attributo non primo, poiché non appartiene all'unica chiave candidata {STUD_NO, COURSE_NO} ; Ma COURSE_NO -> COURSE_FEE, cioè COURSE_FEE dipende da COURSE_NO, che è un sottoinsieme appropriato della chiave candidata. L'attributo non primario COURSE_FEE dipende da un sottoinsieme appropriato della chiave candidata, che è una dipendenza parziale e quindi questa relazione non è in 2NF. Per convertire la relazione di cui sopra in 2NF, dobbiamo dividere la tabella in due tabelle come: Tabella 1: STUD_NO, COURSE_NO Tabella 2: COURSE_NO, COURSE_FEE
Table 1 Table 2 STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000 2 C5>
Nota - 2NF cerca di ridurre i dati ridondanti che vengono archiviati in memoria. Ad esempio, se ci sono 100 studenti che frequentano il corso C1, non è necessario memorizzare la tariffa come 1000 per tutti i 100 record, ma possiamo memorizzarla nella seconda tabella poiché la tariffa del corso per C1 è 1000.
Esempio-2: Considera le seguenti dipendenze funzionali nella relazione R (A, B, C, D )
AB ->C [A e B insieme determinano C] BC -> D [B e C insieme determinano D]>
Risposta:
Innanzitutto, possiamo verificare se esistono dipendenze parziali. Una dipendenza parziale si verifica quando un attributo non primo (non parte di alcuna chiave candidata) dipende solo da una parte di una chiave candidata.
Le chiavi candidate per la relazione R possono essere determinate trovando la chiusura di ciascun attributo:
AB determina ogni chiave.
np.concatenate
Ora controlliamo le dipendenze parziali:
Non ci sono dipendenze parziali in questa relazione perché ogni attributo non primo (C e D) dipende dall'intera chiave candidata di cui fa parte (AB e BC, rispettivamente).
Pertanto, la relazione R è già in 3a Forma Normale (3NF) perché soddisfa le condizioni della 1a Forma Normale (1NF) e della 2a Forma Normale (2NF) e non ha dipendenze transitive.
Conclusione
In conclusione, 2NF è un concetto fondamentale di normalizzazione del database che aiuta a rimuovere le dipendenze parziali nel database relazionale. Seguire le regole 2NF aiuta a organizzare il database per evitare anomalie e garantire l'integrità dei dati, semplificando l'archiviazione e il recupero dei dati.