logo

Derde normaalvorm (3NF)

  • Een relatie bevindt zich in 3NF als deze zich in 2NF bevindt en geen transitieve gedeeltelijke afhankelijkheid bevat.
  • 3NF wordt gebruikt om de gegevensduplicatie te verminderen. Het wordt ook gebruikt om de gegevensintegriteit te bereiken.
  • Als er geen transitieve afhankelijkheid is voor niet-prime attributen, dan moet de relatie zich in de derde normaalvorm bevinden.

Een relatie bevindt zich in de derde normaalvorm als deze aan ten minste één van de volgende voorwaarden voldoet voor elke niet-triviale functieafhankelijkheid X → Y.

  1. X is een supersleutel.
  2. Y is een primair attribuut, dat wil zeggen dat elk element van Y deel uitmaakt van een kandidaatsleutel.
  3. Voorbeeld:

    instantiëren van Java

    Tabel EMPLOYEE_DETAIL:

    EMP_ID EMP_NAME EMP_ZIP EMP_STATE EMP_CITY
    222 Harry 201010 OMHOOG Noida
    333 Stephan 02228 ONS Boston
    444 En 60007 ONS Chicago
    555 Katharine 06389 Groot-Brittannië Norwich
    666 John 462007 Kamerlid Bhopal

    Supersleutel in de bovenstaande tabel:

     {EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....so on 

    Kandidaat sleutel: {EMP_ID}

    Niet-prime-kenmerken: In de gegeven tabel zijn alle attributen behalve EMP_ID niet-prime.

    Hier zijn EMP_STATE & EMP_CITY afhankelijk van EMP_ZIP en EMP_ZIP afhankelijk van EMP_ID. De niet-prime-kenmerken (EMP_STATE, EMP_CITY) zijn transitief afhankelijk van de supersleutel (EMP_ID). Het schendt de regel van de derde normaalvorm.

    Daarom moeten we de EMP_CITY en EMP_STATE naar de nieuwe tabel verplaatsen, met EMP_ZIP als primaire sleutel.

    Java iteratie kaart

    WERKNEMER tabel:

    EMP_ID EMP_NAME EMP_ZIP
    222 Harry 201010
    333 Stephan 02228
    444 En 60007
    555 Katharine 06389
    666 John 462007

    EMPLOYEE_ZIP tabel:

    EMP_ZIP EMP_STATE EMP_CITY
    201010 OMHOOG Noida
    02228 ONS Boston
    60007 ONS Chicago
    06389 Groot-Brittannië Norwich
    462007 Kamerlid Bhopal