De basisregels van database normalisatie kan enige tijd in beslag nemen voor dat je door hebt hoe het precies in z’n werking gaat. Aangezien veel mensen hier moeite mee hebben, deel ik dit artikel over wat de basisregels zijn van database normalisatie. Op het internet zijn er natuurlijk veel handleidingen te vinden over het normaliseren maar in dit artikel probeer ik het zo simpel mogelijk te maken voor je.
Ik ga niet uitleggen wat de voordelen zijn van het normaliseren zoals elke andere website doet maar ik zal je wel een simpel voorbeeld uitleggen hoe je kunt normaliseren.
Factuur normaliseren
De factuur ziet er uit zoals in figuur 1.
ONV
De nulde normaalvorm: Alle gegevens (velden) benoemen en de hoofdsleutel aanwijzen
Bekijk het formulier goed. Waar gaat het document over? (bijv. een factuur, een overzicht etc.)
Zet alle gegevens onder elkaar die je moet opnemen in de te maken database. Geef alvast de hoofdsleutel aan door deze te onderstrepen. Laat de gegevens alvast inspringen die herhaaldelijk voorkomen (RG).
Ze worden gescheiden door een komma.
Let hierbij op het volgende:
1. Overtollige gegevens (vaak constante waarden zoals naam van een bedrijf) laat je weg
2. Processengegevens ook weg laten; deze kunnen worden berekend uit de andere gegevens (bijv. totaalbedrag = aantal * prijs)
3. Zet alle gegevens tussen haakjes ().
4. Zet de Repeterende Groep (RG) tussen haakjes.
5. Probeer zo goed mogelijk een unieke sleutel te benoemen.
6. Onderstreep deze sleutel.
Uitwerking:
Bestelnummer, datum, klantnr, klantnaam, artikelnummer, omschrijving, prijs, aantal, korting
Zet de gegevens die je onder 1 hebt verzameld in de 0NV; de nulde normaalvorm.
Bestelnummer, datum, klantnr, klantnaam, RG (artikelnummer, omschrijving, prijs, aantal, korting)
1NV
Eerste normaalvorm: Repeating Groep (RG) afsplitsen
1. Haal de RG uit de 0NV en plaats deze op een aparte regel.
2. Bepaal wat van deze nieuwe regel de sleutel is.
3. Zorg dat deze vooraan staat in de RG en onderstreept is.
4. Plaats voor deze sleutel de sleutel uit de originele groep (0NV) .
In je RG staan nu 2 gegevens onderstreept . Als twee of meer velden samen de sleutel vormen dan noemen we dat een samengestelde sleutel.
Uitwerking:
(Bestelnummer, datum, klantnr, klantnaam, korting)
RG(Bestelnummer, artikelnummer, omschrijving, prijs, aantal)
2NV
Tweede normaalvorm: Uit de RG de velden in een andere tabel opnemen die niet van de samengestelde sleutel afhankelijk zijn, maar van slechts één veld of sleutel
1. Bepaal welke gegevens in de RG afhankelijk zijn van slechts één veld (of attribuut).
2. Plaats deze gegevens in een aparte groep en voeg daar als eerste de sleutel aan toe waar ze van af¬hankelijk zijn.
Uitwerking:
(Bestelnummer, datum, klantnr, klantnaam, korting)
RG(Bestelnummer, artikelnummer, aantal)
(Artikelnummer, omschrijving, prijs)
3NV
Derde normaalvorm: Onafhankelijke gegevens in de overige regels afsplitsen
1. In deze normaalvorm onderzoek je of er op een van de regels (tabellen) die je hebt gekregen gege¬vens staan die niets met de sleutel te maken hebben, maar die van een ander attribuut (veld) afhankelijk zijn.
2. Plaats dit veld of velden op een nieuwe regel en maak er een sleutel bij. Je kunt alleen maar in regels zoe¬ken waar één of meer “niet-sleutel” velden staan.
(Bestelnummer, datum, klantnr, korting)
(Bestelnummer, artikelnummer, aantal)
(Artikelnummer, omschrijving, prijs)
(Klantnr, klantnaam)
TABELNAMEN
Als laatst moeten er nog logische namen gekozen voor elke tabel.
BESTELLINGEN (Bestelnummer, datum, klantnr, korting)
BESTEL_REGELS (Bestelnummer, artikelnummer, aantal)
ARTIKELEN (Artikelnummer, omschrijving, prijs)
KLANTEN (Klantnr, klantnaam)
Entititeit diagram
In de laatste stap maken we de entiteits diagram.
De tabellen structuur ziet er dus als volgt uit:
Kan je even zeggen wat in elke tabel de primary en Foreing key is?
ben je blind ofzo?
Dit zie je o.a. terug in de laatste afbeelding.
ben net begonnen met een opleiding Front end developer en moet zeggen dat je dit heel simpel het uitgelegd voor iemand die er niets van begreep! Dank je
Hoi Abid,
Graag gedaan!
hebt*