Database ontwerp
Normaliseren
Wat is het
Normaliseren is het proces waarbij je een relationeel model ontwerpt. Je bepaalt welke gegevens worden opgeslagen, welke sleutels nodig zijn en hoe relaties tussen de verschillende tabellen worden gelegd.
Normaliseren
- Inventariseer welke gegevens worden opgeslagen
- Wel elementaire gegevens opslaan
- Geen procesgegevens. Dit zijn gegevens die je kunt berekenen. Bijvoorbeeld de totaalprijs van een bestelling
- Geen vaste gegevens. Dit zijn gegevens die niet veranderen. Bijvoorbeeld de naam 'Wehkamp' voor de database achter de website van 'Wehkamp'.
- Bepaal welke gegevens een relatie met elkaar hebben
- Welke gegevens horen bij elkaar. Bijvoorbeeld persoonsgegevens zoals voornaam, achternaam, adres. Deze gegevens horen bij 1 persoon.
- Geef een groep gegevens een sleutel
- Welke gegevens hebben een relatie met elkaar en wat voor relatie is dat dan. Een-op-meer of meer-op-meer.
Een voorbeeld
Een winkel in sportartikelen gaat een webshop beginnen. Welke gegevens zijn nodig om producten weer te geven en klanten bestellingen te laten doen.
Klanten
id, voornaam, tussenvoegsel, achternaam, email, telefoon
Producten
id, leverancier, omschrijving, prijs
Bestelling
id, klant-id, datum
Bestelregel
bestelling_id, product_id, aantal
Normaalvormen
Download hier het voorbeeld van een orderformulier van sportpaleis 'Snel, dat wel'
0e normaalvorm
- Bepaal welke gegevens opgeslagen moeten worden in de database:
- Elementaire gegevens opslaan
- Berekende gegevens niet opslaan
- Vaste gegevens niet opslaan.
- Geef de groep een sleutel
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Artikelnummer
Artikel
Prijs
Aantal
Totaalprijs
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Artikelnummer
Artikel
Prijs
Aantal
Totaalprijs
0e normaalvorm
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Artikelnummer
Artikel
Prijs
Aantal
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Artikelnummer
Artikel
Prijs
Aantal
1e normaalvorm
- Verzamel repeterende groepen en verwijder ze uit de oorspronkelijke groep
- Voeg de sleutel uit de oorspronkelijke groep toe aan de nieuwe groepen
- Geef de nieuwe groepen een sleutel
0e normaalvorm
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Artikelnummer
Artikel
Prijs
Aantal
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Artikelnummer
Artikel
Prijs
Aantal
1e normaalvorm
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Artikel
Prijs
Aantal
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Artikel
Prijs
Aantal
2e Normaalvorm
- Plaats de attributen die functioneel afhankelijk zijn van slechts een deel van de sleutel in een nieuwe groep samen met het attribuut waarvan zij wel functioneel afhankelijk zijn.
- Geef de nieuwe groep een sleutel.
1e normaalvorm
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Artikel
Prijs
Aantal
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Artikel
Prijs
Aantal
2e normaalvorm
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Aantal
Artikelnummer
Artikel
Prijs
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Aantal
Artikelnummer
Artikel
Prijs
3e Normaalvorm
- Plaats alle attributen die functioneel afhankelijk zijn van niet sleutelvelden in een nieuwe groep, samen met het attribuut waar ze van afhankelijk zijn.
- Geef deze nieuwe groep een sleutel
- Verwijder al deze attributen uit de oorspronkelijke groep, behalve het attribuut waar ze van afhankelijk zijn.
2e normaalvorm
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Aantal
Artikelnummer
Artikel
Prijs
Ordernummer
Orderdatum
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Artikelnummer
Aantal
Artikelnummer
Artikel
Prijs
3e normaalvorm
Ordernummer
Orderdatum
Klantnummer
Ordernummer
Artikelnummer
Aantal
Artikelnummer
Artikel
Prijs
Klantnummer
Klantnaam
Adres
Plaats
Ordernummer
Orderdatum
Klantnummer
Ordernummer
Artikelnummer
Aantal
Artikelnummer
Artikel
Prijs
Klantnummer
Klantnaam
Adres
Plaats