logo

Tweede normaalvorm (2NF)

First Normal Form (1NF) elimineert redundantie niet, maar elimineert zich herhalende groepen. In plaats van meerdere kolommen met hetzelfde soort gegevens in een record te hebben (0NF- of niet-genormaliseerde vorm), verwijdert u de herhaalde informatie in een afzonderlijke relatie en geeft u deze weer als rijen. Dit is wat 1NF inhoudt.

Tweede normaalvorm

De tweede Normaalvorm (2NF) is gebaseerd op het concept van volledig 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 kenmerk bevindt zich automatisch in minimaal 2NF. Een relatie die niet in 2NF staat, kan last hebben van update-afwijkingen. Om in de tweede normaalvorm te zijn, moet een relatie de eerste normaalvorm hebben en mag de relatie geen gedeeltelijke afhankelijkheid bevatten. Een relatie bevindt zich in 2NF als deze geen gedeeltelijke afhankelijkheid heeft, dat wil zeggen dat geen enkel niet-prime-attribuut (attributen die geen deel uitmaken van een kandidaatsleutel) afhankelijk is van een juiste subset van een kandidaatsleutel van de tabel. Met andere woorden,

Als een relatie zich in de eerste normale vorm bevindt en elk attribuut dat geen primaire sleutel is, volledig functioneel afhankelijk is van de primaire sleutel, dan is de relatie in de tweede normale vorm (2NF).



Opmerking - Als de juiste subset van de kandidaatsleutel een niet-prime-attribuut bepaalt, wordt deze aangeroepen gedeeltelijke afhankelijkheid . De normalisatie van 1NF-relaties met 2NF betreft de verwijdering van gedeeltelijke afhankelijkheden . Als er sprake is van een gedeeltelijke afhankelijkheid, verwijderen we de gedeeltelijk afhankelijke attribuut(en) uit de relatie door ze in een nieuwe relatie te plaatsen, samen met een kopie van hun determinant. Beschouw de onderstaande voorbeelden.

Voorbeeld 1: Beschouw de tabel als volgt hieronder.

STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>

{Merk op dat er veel cursussen zijn met hetzelfde cursusgeld. } Hier kan COURSE_FEE niet alleen de waarde van COURSE_NO of STUD_NO bepalen; COURSE_FEE kan samen met STUD_NO de waarde van COURSE_NO niet bepalen; COURSE_FEE kan samen met COURSE_NO de waarde van STUD_NO niet bepalen; Daarom zou COURSE_FEE een niet-prime-attribuut zijn, omdat het niet tot de enige kandidaatsleutel {STUD_NO, COURSE_NO} behoort; Maar COURSE_NO -> COURSE_FEE, d.w.z. COURSE_FEE is afhankelijk van COURSE_NO, wat een juiste subset is van de kandidaatsleutel. Het niet-prime-attribuut COURSE_FEE is afhankelijk van een juiste subset van de kandidaatsleutel, wat een gedeeltelijke afhankelijkheid is en dus is deze relatie niet in 2NF. Om de bovenstaande relatie naar 2NF te converteren, moeten we de tabel in twee tabellen splitsen, zoals: Tabel 1: STUD_NO, COURSE_NO Tabel 2: COURSE_NO, COURSE_FEE

virtueel geheugen
   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>

Opmerking - 2NF probeert de hoeveelheid overtollige gegevens die in het geheugen worden opgeslagen te verminderen. Als er bijvoorbeeld 100 studenten een C1-cursus volgen, hoeven we het tarief niet op te slaan als 1000 voor alle 100 records. In plaats daarvan kunnen we het in de tweede tabel opslaan, aangezien het cursusgeld voor C1 1000 is.

Voorbeeld-2: Overweeg de volgende functionele afhankelijkheden in relatie R (A, B, C, D)

AB ->C [A en B bepalen samen C] BC -> D [B en C bepalen samen D]>

Antwoord:

Ten eerste kunnen we controleren of er gedeeltelijke afhankelijkheden zijn. Er is sprake van een gedeeltelijke afhankelijkheid wanneer een niet-prime-attribuut (geen onderdeel van een kandidaatsleutel) slechts van een deel van een kandidaatsleutel afhankelijk is.

De kandidaatsleutels voor relatie R kunnen worden bepaald door de afsluiting van elk attribuut te vinden:

AB bepaalt elke toets.

Laten we nu eens kijken naar gedeeltelijke afhankelijkheden:

Er zijn geen gedeeltelijke afhankelijkheden in deze relatie omdat elk niet-prime-attribuut (C en D) afhankelijk is van de gehele kandidaatsleutel(s) waarvan het deel uitmaakt (respectievelijk AB en BC).

Daarom bevindt de relatie R zich al in de 3e normaalvorm (3NF) omdat deze voldoet aan de voorwaarden van de 1e normaalvorm (1NF) en de 2e normaalvorm (2NF) en geen transitieve afhankelijkheden heeft.

Conclusie

Kortom, 2NF is een fundamenteel concept van databasenormalisatie dat helpt bij het verwijderen van gedeeltelijke afhankelijkheden in uw relationele database. Door de 2NF-regels te volgen, kunt u uw database organiseren om afwijkingen te voorkomen en de gegevensintegriteit te garanderen, waardoor het gemakkelijker wordt om gegevens op te slaan en op te halen.

hoeveel steden in de verenigde staten van amerika