GeeksforGeeks
First Normal Form (1NF) elimineert geen redundantie, maar wel herhalende groepen.
In plaats van meerdere kolommen van dezelfde soort gegevens in een record te hebben, (0NF of Unnormalized form) verwijdert u de herhaalde informatie in een afzonderlijke relatie en geeft u ze weer als rijen. Dit is wat 1NF vormt.
Tweede Normaal Vorm (2NF):
Tweede Normaal Vorm (2NF) is gebaseerd op het concept van volledige functionele afhankelijkheid. De tweede normaalvorm is van toepassing op relaties met samengestelde sleutels, dat wil zeggen relaties met een primaire sleutel die uit twee of meer attributen bestaat. Een relatie met een primaire sleutel met één attribuut is automatisch ten minste in 2NF. Een relatie die niet in 2NF is kan last hebben van de update anomalieën.
Om in tweede normale vorm te zijn, moet een relatie in eerste normale vorm zijn en mag de relatie geen partiële afhankelijkheid bevatten. Een relatie is in 2NF als zij No Partial Dependency heeft, d.w.z. dat geen enkel niet-priem attribuut (attributen die geen deel uitmaken van een kandidaatsleutel) afhankelijk is van een juiste subset van een kandidaatsleutel van de tabel.
Met andere woorden,
Een relatie die in First Normal Form is en elk niet-primair-sleutelattribuut is volledig functioneel afhankelijk van de primaire sleutel, dan is de relatie in Second Normal Form (2NF).
Noot – Als de juiste subset van de kandidaatsleutel bepalend is voor het niet-primaire attribuut, wordt dit gedeeltelijke afhankelijkheid genoemd.
De normalisatie van 1NF-relaties naar 2NF omvat de verwijdering van gedeeltelijke afhankelijkheden. Als er een gedeeltelijke afhankelijkheid bestaat, verwijderen we de gedeeltelijk afhankelijke attribuut (of attributen) uit de relatie door ze in een nieuwe relatie te plaatsen, samen met een kopie van hun determinant.
Overweeg de onderstaande voorbeelden.
Voorbeeld-1:
Overweeg de tabel zoals hieronder.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Merk op dat er veel cursussen zijn met hetzelfde cursusgeld.
Hier,
COURSE_FEE kan op zichzelf de waarde van COURSE_NO of STUD_NO niet bepalen;
COURSE_FEE samen met STUD_NO kan de waarde van COURSE_NO niet bepalen;
COURSE_FEE samen met COURSE_NO kan de waarde van STUD_NO niet bepalen;
Hieruit volgt dat
COURSE_FEE een niet-priem attribuut zou zijn, omdat het niet behoort tot de enige kandidaat-sleutel {STUD_NO, COURSE_NO} ;
Maar, COURSE_NO -> COURSE_FEE, d.w.z.e., COURSE_FEE is afhankelijk van COURSE_NO, dat een juiste deelverzameling is van de kandidaat-sleutel. Niet-primeur attribuut COURSE_FEE is afhankelijk van een juiste subset van de kandidaat sleutel, dat is een gedeeltelijke afhankelijkheid en dus is deze relatie niet in 2NF.
Om de bovenstaande relatie in 2NF om te zetten,
moeten wij de tabel in twee tabellen splitsen, zoals :
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 probeert de overbodige gegevens die in het geheugen worden opgeslagen te verminderen. Bijvoorbeeld, als er 100 studenten zijn die de cursus C1 volgen, hoeven we de kosten niet op te slaan als 1000 voor alle 100 records, in plaats daarvan kunnen we het eenmaal opslaan in de tweede tabel als het cursusgeld voor C1 is 1000.
Voorbeeld-2:
Overweeg de volgende functionele afhankelijkheden in relatie R (A, B, C, D )
AB -> C BC -> D
In de bovenstaande relatie is AB de enige kandidaat-sleutel en er is geen gedeeltelijke afhankelijkheid, dat wil zeggen, elke juiste subset van AB bepaalt geen niet-primeur attribuut.