GeeksforGeeks
Första normalformen (1NF) eliminerar inte redundans, utan snarare att den eliminerar upprepande grupper.
Istället för att ha flera kolumner med samma typ av data i en post (0NF eller onormaliserad form) tar du bort den upprepade informationen till en separat relation och representerar dem som rader. Detta är vad som utgör 1NF.
Second Normal Form (2NF):
Second Normal Form (2NF) bygger på begreppet fullständigt funktionellt beroende. Second Normal Form gäller för relationer med sammansatta nycklar, dvs. relationer med en primärnyckel som består av två eller flera attribut. En relation med en primärnyckel med ett enda attribut har automatiskt minst 2NF. En relation som inte är i 2NF kan drabbas av uppdateringsanomalier.
För att vara i andra normalformen måste en relation vara i första normalformen och relationen får inte innehålla något partiellt beroende. En relation är i 2NF om den inte har något partiellt beroende, dvs. inget icke primära attribut (attribut som inte ingår i någon kandidatnyckel) är beroende av någon korrekt delmängd av någon kandidatnyckel i tabellen.
Med andra ord,
En relation som är i första normalformen och varje attribut som inte är en primärnyckel är helt funktionellt beroende av primärnyckeln, då är relationen i andra normalformen (2NF).
Anmärkning – Om den korrekta delmängden av kandidatnyckeln bestämmer attribut som inte är primära attribut kallas det partiellt beroende.
Normaliseringen av 1NF-relationer till 2NF innebär att partiella beroenden tas bort. Om det finns ett partiellt beroende tar vi bort det/de partiellt beroende attributet/attributen från relationen genom att placera dem i en ny relation tillsammans med en kopia av deras determinant.
Tänk på nedanstående exempel.
Exempel-1:
Tänk på tabellen som följer nedan.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Notera att det finns många kurser som har samma kursavgift. }
Här kan
KURSavgiften inte ensam avgöra värdet av KURS_NO eller STUD_NO;
KURSavgiften tillsammans med STUD_NO kan inte avgöra värdet av KURS_NO;
KURSavgiften tillsammans med KURS_NO kan inte avgöra värdet av STUD_NO;
Därmed skulle
COURSE_FEE vara ett icke-primat attribut, eftersom det inte tillhör den enda kandidatnyckeln {STUD_NO, COURSE_NO} ;
Men, COURSE_NO -> COURSE_FEE, dvs.e., COURSE_FEE är beroende av COURSE_NO, som är en korrekt delmängd av kandidatnyckeln. Det icke primära attributet COURSE_FEE är beroende av en korrekt delmängd av kandidatnyckeln, vilket är ett partiellt beroende och därför är denna relation inte i 2NF.
För att konvertera ovanstående relation till 2NF,
måste vi dela upp tabellen i två tabeller som :
Tabell 1: STUD_NO, COURSE_NO
Tabell 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
Anm. – 2NF försöker att reducera de överflödiga data som lagras i minnet. Om det till exempel finns 100 studenter som läser kursen C1 behöver vi inte lagra kursavgiften som 1000 för alla 100 poster, utan vi kan lagra den i den andra tabellen eftersom kursavgiften för C1 är 1000.
Exempel-2:
Konsultera följande funktionella beroenden i relationen R (A, B, C, D )
AB -> C BC -> D
I ovanstående relation är AB den enda kandidatnyckeln och det finns inget partiellt beroende, dvs. att en lämplig delmängd av AB inte bestämmer något attribut som inte är primära.