- En relation vil være i 3NF, hvis den er i 2NF og ikke indeholder nogen transitiv delvis afhængighed.
- 3NF bruges til at reducere dataduplikeringen. Det bruges også til at opnå dataintegriteten.
- Hvis der ikke er nogen transitiv afhængighed for ikke-primære attributter, så skal relationen være i tredje normalform.
En relation er i tredje normalform, hvis den har mindst en af følgende betingelser for hver ikke-triviel funktionsafhængighed X → Y.
- X er en supernøgle.
- Y er en primær attribut, dvs. hvert element i Y er en del af en kandidatnøgle.
Eksempel:
groovy computersprog
EMPLOYEE_DETAIL tabel:
EMP_ID | EMP_NAME | EMP_ZIP | EMP_STATE | EMP_CITY |
---|---|---|---|---|
222 | Harry | 201010 | OP | Noida |
333 | Stephan | 02228 | OS | Boston |
444 | Og | 60007 | OS | Chicago |
555 | Katharine | 06389 | Storbritannien | Norwich |
666 | John | 462007 | MP | Bhopal |
Supernøgle i tabellen ovenfor:
{EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....so on
Kandidatnøgle: {EMP_ID}
Ikke-primære attributter: I den givne tabel er alle attributter undtagen EMP_ID ikke-prime.
websteder som coomeet
Her er EMP_STATE & EMP_CITY afhængig af EMP_ZIP og EMP_ZIP afhængig af EMP_ID. De ikke-primære attributter (EMP_STATE, EMP_CITY) er transitivt afhængige af supernøgle (EMP_ID). Det bryder med reglen om tredje normalform.
Det er derfor, vi skal flytte EMP_CITY og EMP_STATE til den nye tabel, med EMP_ZIP som en primær nøgle.
MEDARBEJDER tabel:
EMP_ID | EMP_NAME | EMP_ZIP |
---|---|---|
222 | Harry | 201010 |
333 | Stephan | 02228 |
444 | Og | 60007 |
555 | Katharine | 06389 |
666 | John | 462007 |
EMPLOYEE_ZIP tabel:
EMP_ZIP | EMP_STATE | EMP_CITY |
---|---|---|
201010 | OP | Noida |
02228 | OS | Boston |
60007 | OS | Chicago |
06389 | Storbritannien | Norwich |
462007 | MP | Bhopal |