Normalized vs. Denormalized Databases

Toen ik voor het eerst met SQL begon te werken, stond alles in één tabel. Toegegeven, de tabel zag er ongeveer zo uit:

De meeste databases bevatten iets meer gegevens dan vier kolommen en vijf rijen. Het debat tussen genormaliseerde en gedenormaliseerde databases woedt dus al eeuwen (ik spreek in ontwikkelaarstijd). Dus wat is het verschil?

Genormaliseerde databases bevatten meerdere tabellen. Gegevens worden in één tabel georganiseerd en andere, gerelateerde gegevens worden in een andere tabel gezet. Je krijgt toegang tot elk stukje data via relaties naar elke tabel, voornamelijk join tabellen. Het goede is dat normalisatie de redundantie vermindert en de gegevensintegriteit handhaaft. Alles wordt georganiseerd in mooie kleine tabellen waarin alle gegevens die bij elkaar moeten blijven, dat ook doen.

Alle grijze katjes in deze tabel, alstublieft.

Maar, net als de keerzijde van Rails, kunnen genormaliseerde databases ervoor zorgen dat query’s trager worden, vooral wanneer je te maken hebt met een shit ton (technische term) aan gegevens. Dit is waar gedenormaliseerde databases om de hoek komen kijken. Hoewel multiple joins bevredigend en leuk zijn, kunnen ze snel complex worden. Wanneer alles in dezelfde tabel staat, hoeft de query niet van tabel naar tabel te springen om te vinden wat je zoekt, het staat er al. Een nadeel is dat er overbodige gegevens zullen zijn – een kleine opoffering om snelheid te winnen.

Alle katten in dezelfde tabel, geen mitsen en maren.

Het mooiste van dit alles is dat je niet voor het een of het ander hoeft te kiezen; je database hoeft niet tot de nulde graad te worden genormaliseerd of volledig te worden gedenormaliseerd in één tabel. Als je queries te traag lopen en het komt door de complexiteit van de query, dan kan je de database net genoeg denormaliseren om te veel joins weg te werken. Als je database een gigantische puinhoop van gegevens is en je wat organisatie nodig hebt, dan is een beetje van het organiseren van gegevens in verschillende tabellen en het wegwerken van redundantie op zijn plaats. Databases kunnen je het beste van twee werelden geven, met een beetje TLC.

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *