Basis van databases
De primaire sleutel van de tabel Medewerker (MedewerkerNr, Naam, Afdelingscode, Afdelingsnaam) is MedewerkerNr, en elke kolom bevat één waarde. De functionele afhankelijkheden zijn MedewerkerNr → Naam, MedewerkerNr → Afdelingscode en Afdelingscode → Afdelingsnaam. Welke uitspraak over de normaalvorm van deze tabel is juist?
- AIn de tweede normaalvorm, maar niet in de derde normaalvorm
- BIn de eerste normaalvorm, maar niet in de tweede normaalvorm
- CIn de derde normaalvorm
Antwoord en toelichting tonen
Antwoord: A. In de tweede normaalvorm, maar niet in de derde normaalvorm
Elke kolom bevat één enkele, niet-herhalende waarde, dus de tabel is in de eerste normaalvorm. Omdat de primaire sleutel uit de ene kolom MedewerkerNr bestaat, kan een partiële functionele afhankelijkheid van een deel van de sleutel niet voorkomen, dus de tabel is ook in de tweede normaalvorm. Afdelingsnaam wordt echter bepaald via Afdelingscode, dat niet de primaire sleutel is, zoals in MedewerkerNr → Afdelingscode → Afdelingsnaam; door deze transitieve functionele afhankelijkheid is de tabel niet in de derde normaalvorm. Zoals de tabel nu is, wordt de afdelingsnaam in de rij van elke medewerker van dezelfde afdeling herhaald, en het hernoemen van een afdeling vereist het herschrijven van veel rijen. Door een tabel Afdeling (Afdelingscode, Afdelingsnaam) af te splitsen en in de tabel Medewerker alleen Afdelingscode te bewaren, ontstaat de derde normaalvorm. Afdelingscode in de tabel Medewerker wordt dan een vreemde sleutel die naar de tabel Afdeling verwijst.