GeeksforGeeks
Første normalform (1NF) eliminerer ikke redundans, men snarere at den eliminerer gentagende grupper.
I stedet for at have flere kolonner med den samme slags data i en post (0NF eller unormaliseret form) fjerner du de gentagne oplysninger til en separat relation og repræsenterer dem som rækker. Dette er det, der udgør 1NF.
Second Normal Form (2NF):
Second Normal Form (2NF) er baseret på begrebet fuld funktionel afhængighed. Second Normal Form gælder for relationer med sammensatte nøgler, dvs. relationer med en primærnøgle, der er sammensat af to eller flere attributter. En relation med en primær nøgle med en enkelt attribut er automatisk mindst i 2NF. En relation, der ikke er i 2NF, kan lide under opdateringsanomalier.
For at være i anden normalform skal en relation være i første normalform, og relationen må ikke indeholde nogen delvis afhængighed. En relation er i 2NF, hvis den ikke har nogen partiel afhængighed, dvs. at ingen attribut, der ikke er primtal (attributter, der ikke er en del af en kandidatnøgle), er afhængig af en korrekt delmængde af en kandidatnøgle i tabellen.
Med andre ord,
En relation, der er i første normalform, og enhver attribut, der ikke er en primær nøgle, er fuldt funktionelt afhængig af den primære nøgle, så er relationen i anden normalform (2NF).
Note – Hvis den rette delmængde af kandidatnøglen bestemmer ikke-primær nøgleattribut, kaldes det delvis afhængighed.
Normaliseringen af 1NF-relationer til 2NF indebærer fjernelse af delvis afhængighed. Hvis der findes en delvis afhængighed, fjerner vi den eller de delvist afhængige attributter fra relationen ved at placere dem i en ny relation sammen med en kopi af deres determinant.
Se på nedenstående eksempler.
Eksempel-1:
Se på tabellen som følger nedenfor.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Bemærk, at der er mange kurser, der har samme kursusafgift. }
Her,
KURSUS_AFGIFT kan ikke alene bestemme værdien af KURSUS_NO eller STUD_NO;
KURSUS_AFGIFT sammen med STUD_NO kan ikke bestemme værdien af KURSUS_NO;
KURSUS_AFGIFT sammen med KURSUS_NO kan ikke bestemme værdien af STUD_NO;
Dermed ville
COURSE_FEE være en ikke-primat attribut, da den ikke tilhører den eneste kandidatnøgle {STUD_NO, COURSE_NO} ;
Men, COURSE_NO -> COURSE_FEE, i.e., COURSE_FEE er afhængig af COURSE_NO, som er en egentlig delmængde af kandidatnøglen. Den ikke-primære attribut COURSE_FEE er afhængig af en korrekt delmængde af kandidatnøglen, hvilket er en delvis afhængighed, og derfor er denne relation ikke i 2NF.
For at konvertere ovenstående relation til 2NF,
skal vi opdele tabellen i to tabeller som :
Tabel 1: STUD_NO, COURSE_NO
Tabel 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
Note – 2NF forsøger at reducere de redundante data, der bliver lagret i hukommelsen. Hvis der f.eks. er 100 studerende, der deltager i kursus C1, behøver vi ikke at gemme gebyret som 1000 for alle de 100 poster, men kan i stedet gemme det i den anden tabel, da kursusgebyret for C1 er 1000.
Eksempel-2:
Overvej følgende funktionelle afhængigheder i relationen R (A, B, C, D )
AB -> C BC -> D
I ovenstående relation er AB den eneste kandidatnøgle, og der er ingen partiel afhængighed, dvs. at enhver korrekt delmængde af AB ikke bestemmer nogen attribut, der ikke er primo-attribut.