Derde Normaalvorm
De laatste Normaalvorm die ik behandel in deze tutorial is de Derde Normaalvorm. Hiervoor hebben we de volgende stappen:
1. Geef de niet-sleutel attributen aan die functioneel afhankelijk zijn van andere niet-sleutel attributen.
2. Formeer een aparte groep voor ieder attribuut of combinatie van attributen, waar andere attributen functioneel van afhankelijk zijn.
3. Neem in iedere groep de attributen met bijbehorende sleutel op en wijs de primaire sleutel aan.
4. Verwijder de attributen van de nieuwe groep(en) uit de oorspronkelijke groep.
Ik begin nog maar eens met de uitkomst van de Tweede Normaalvorm:
2NV
ORDERS
ordernr
orderdatum
klantnr
klantnaam
adres
postcode
plaats
BESTELDE_ARTIKELEN
ordernr
artnr
aantal
ARTIKELEN
artnr
artomschrijving
prijs
1. Geef de niet-sleutel attributen aan die functioneel afhankelijk zijn van andere niet-sleutel attributen.
Als we kijken in de tabel ORDERS zien we dat er een aantal gegevens zijn die niet afhankelijk zijn van ordernr. Deze zijn klantnaam, adres, postcode en plaats. Deze zijn afhankelijk van het klantnr.
Klantnr is in deze tabel een niet-sleutelattribuut, dus deze stap is makkelijk uit te voeren:
(de afhankelijkheid is aangegeven met een A)
2NV
ORDERS
ordernr
orderdatum
A klantnr
A klantnaam
A adres
A postcode
A plaats
BESTELDE_ARTIKELEN
ordernr
artnr
aantal
ARTIKELEN
artnr
artomschrijving
prijs
2. Formeer een aparte groep voor ieder attribuut of combinatie van attributen, waar andere attributen functioneel van afhankelijk zijn.
Vrij vertaald moeten we voor de groep die we net aangegeven hebben een nieuwe groep maken:
2NV
ORDERS
ordernr
orderdatum
A klantnr
A klantnaam
A adres
A postcode
A plaats
KLANTEN
klantnaam
adres
postcode
plaats
BESTELDE_ARTIKELEN
ordernr
artnr
aantal
ARTIKELEN
artnr
artomschrijving
prijs
3. Neem in iedere groep de attributen met bijbehorende sleutel op en wijs de primaire sleutel aan.
We moeten dus de sleutel waarvan de nieuwe groep afhankelijk is in de nieuwe groep plaatsen, daarna moeten we de sleutel aangeven. De nieuwe groep ziet er dan zo uit:
KLANTEN
klantnr
klantnaam
adres
postcode
plaats
Let er wel op dat klantnr niet zomaar uit ORDERS gehaald kan worden, dan zouden de orders namelijk nooit aan een klant gekoppeld kunnen worden.
4. Verwijder de attributen van de nieuwe groep(en) uit de oorspronkelijke groep.
Als we deze stap hebben gedaan zijn we klaar met het normaliseren. Dit ziet er dan zo uit:
3NV
ORDERS
ordernr
klantnr
orderdatum
KLANTEN
klantnr
klantnaam
adres
postcode
plaats
BESTELDE_ARTIKELEN
ordernr
artnr
aantal
ARTIKELEN
artnr
artomschrijving
prijs
Inhoudsopgave
- Normaliseren inleiding
- Nulde Normaalvorm
- Eerste Normaalvorm
- Tweede Normaalvorm
- Derde Normaalvorm
- Afsluiting
- Begrippen & Literatuur