- 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.
- X is een supersleutel.
- Y is een primair attribuut, dat wil zeggen dat elk element van Y deel uitmaakt van een kandidaatsleutel.
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 |