Basis van databases
In een database die vooral wordt gebruikt om te lezen en te aggregeren, worden tabellen die door normalisatie zijn opgesplitst soms bewust samengevoegd tot één tabel, zodat dezelfde gegevens dubbel worden bewaard (denormalisatie). Welke combinatie van een voordeel en een nadeel van dit ontwerp is juist?
- ADe opslag krimpt omdat de duplicatie verdwijnt, maar lezen wordt trager omdat er meer joins zijn
- BZowel lezen als wijzigen wordt sneller, en de consistentie van de gegevens blijft automatisch gewaarborgd
- CLezen wordt sneller omdat er minder joins zijn, maar er is meer werk bij wijzigingen nodig om de dubbele gegevens consistent te houden
Antwoord en toelichting tonen
Antwoord: C. Lezen wordt sneller omdat er minder joins zijn, maar er is meer werk bij wijzigingen nodig om de dubbele gegevens consistent te houden
Normalisatie verwijdert dubbele gegevens en voorkomt wijzigingsanomalieën, maar elke zoekopdracht heeft dan joins over meerdere tabellen nodig. Waar de leesprestaties belangrijk zijn, wordt de normalisatie soms bewust doorbroken door kolommen die vaak samen worden gebruikt in één tabel samen te voegen of door geaggregeerde resultaten als kolommen op te slaan. Dit heet denormalisatie. Met minder joins wordt lezen sneller, maar omdat dezelfde gegevens op meerdere plekken worden vastgelegd, moet bij elke wijziging elke plek correct worden bijgewerkt, wat het werk bij wijzigingen en het risico op inconsistenties vergroot. Ook de benodigde opslag neemt in het algemeen toe. Daarom worden databases voor transactieverwerking met veel wijzigingen in principe genormaliseerd, en wordt denormalisatie alleen toegepast waar het nodig is, na het afwegen van voordeel en kosten.