Wat is Derde normaalvorm (3NF)?

De toestand van een tabel die in de tweede normaalvorm is en geen kolom heeft die wordt bepaald via een andere kolom dan de primaire sleutel (geen transitieve functionele afhankelijkheid). Is er bijvoorbeeld een afhankelijkheid zoals MedewerkerNr → Afdelingscode → Afdelingsnaam, dan ontstaat de derde normaalvorm door een tabel voor de afdelingen af te splitsen.

Japanse benaming: 第3正規形

“Derde normaalvorm (3NF)” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Basis van databases.

Vakgebied: Basis van databases

Nu oefenen: vragen over Derde normaalvorm (3NF)

De primaire sleutel van de tabel Bestelling (BestelNr, ArtikelNr, Aantal, KlantNr, Klantnaam) is {BestelNr, ArtikelNr}, en de functionele afhankelijkheden zijn {BestelNr, ArtikelNr} → Aantal, BestelNr → KlantNr en KlantNr → Klantnaam. Wat is het juiste resultaat van de normalisatie van deze tabel tot de derde normaalvorm?

  1. ABestelregel (BestelNr, ArtikelNr, Aantal, KlantNr), Klant (KlantNr, Klantnaam)
  2. BBestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr), Klant (KlantNr, Klantnaam)
  3. CBestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr, Klantnaam)
Antwoord en toelichting tonen

Antwoord: B. Bestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr), Klant (KlantNr, Klantnaam)

De tweede normaalvorm is een toestand in de eerste normaalvorm waarin geen kolom afhangt van slechts een deel van de primaire sleutel (geen partiële functionele afhankelijkheid). BestelNr → KlantNr is een partiële functionele afhankelijkheid, omdat KlantNr alleen door BestelNr wordt bepaald, dat slechts een deel van de primaire sleutel is; de oorspronkelijke tabel is dus in de eerste normaalvorm, maar niet in de tweede. Door de kolommen die door BestelNr worden bepaald af te splitsen naar Bestelling (BestelNr, KlantNr, Klantnaam), ontstaat de tweede normaalvorm. De derde normaalvorm is een toestand in de tweede normaalvorm waarin geen kolom wordt bepaald via een andere kolom dan de primaire sleutel (geen transitieve functionele afhankelijkheid). In Bestelling zit nog de transitieve functionele afhankelijkheid BestelNr → KlantNr → Klantnaam, dus wordt ook Klant (KlantNr, Klantnaam) afgesplitst. De drie tabellen Bestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr) en Klant (KlantNr, Klantnaam) zijn dan in de derde normaalvorm. Door ze op BestelNr en KlantNr te joinen, ontstaat de oorspronkelijke tabel weer.

“Derde normaalvorm (3NF)” in de toelichting

Vragen met “Derde normaalvorm (3NF)” (2)

  1. De primaire sleutel van de tabel Bestelling (BestelNr, ArtikelNr, Aantal, KlantNr, Klantnaam) is {BestelNr, ArtikelNr}, en de functionele afhankelijkheden zijn {BestelNr, ArtikelNr} → Aantal, BestelNr → KlantNr en KlantNr → Klantnaam. Wat is het juiste resultaat van de normalisatie van deze tabel tot de derde normaalvorm?
  2. 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?

Verwante termen

Primaire sleutel Normalisatie Vreemde sleutel (foreign key) ACID-eigenschappen ER-diagram (entity-relationshipdiagram) Index (databaseindex) Isolatieniveau NoSQL Relationele database SQL

Naar de woordenlijst