Normalisatie organiseert gegevens om redundantie te verminderen en de integriteit te verbeteren. Het doel is om elk gegeven slechts één keer op te slaan. Als het adres van een klant in elk orderrecord voorkomt, moet een adreswijziging op honderden plaatsen worden doorgevoerd. Als er één wordt gemist, zijn de gegevens inconsistent. Normalisatie verplaatst het adres naar een klantentabel. Orders verwijzen naar de klant via een ID. Het adres wordt slechts één keer opgeslagen. Wijzig het daar en elke order weerspiegelt de nieuwe waarde.
Het proces volgt de normale vormen. De eerste normale vorm elimineert herhalende groepen. De tweede normale vorm verwijdert partiële afhankelijkheden. De derde normale vorm verwijdert transitieve afhankelijkheden. Elke vorm voegt beperkingen toe die redundantie verder verminderen. Hogere vormen bestaan, maar worden in de praktijk zelden gebruikt. De meeste transactionele databases streven naar de derde normale vorm. Normalisatie kent afwegingen. Meer tabellen betekenen meer joins, wat query's kan vertragen. Voor transactionele systemen wegen de voordelen op het gebied van integriteit op tegen de prestatiekosten. Voor analytische systemen is het tegenovergestelde vaak waar. Gedenormaliseerde schema's met brede tabellen en redundante kolommen voeren query's sneller uit omdat ze joins vermijden. Daarom gebruiken datawarehouses ster- en sneeuwvlokschema's die bewust denormaliseren. Het juiste normalisatieniveau hangt af van de werklast. Transactionele systemen normaliseren. Analytische systemen denormaliseren. Beide zijn geschikt voor hun doel.
Normale vormen
- Eerste normale vorm — geen herhalende groepen
- Tweede normale vorm — geen partiële afhankelijkheden
- Derde normale vorm — geen transitieve afhankelijkheden
- Boyce-Codd normale vorm — een strengere versie van de derde
Normalisatie draait om integriteit. Sla elk feit slechts één keer op en de gegevens blijven consistent. Sla het meerdere keren op en inconsistentie is onvermijdelijk.
Comments
No comments yet. Be the first to share a thought.
Leave a comment