Databasenormalisatie is een methode om een relationele database zo te structureren dat elk feit op maar één plek staat. In plaats van de naam en het adres van een klant bij elke bestelling te herhalen, sla je het één keer op in een klantentabel en verwijs je ernaar. Dat haalt de dubbeling weg die ervoor zorgt dat records elkaar gaan tegenspreken.

Een helder voorbeeld is een papieren adresboekje versus een contacten-app. In een papieren boekje streep je bij een verhuizing het adres in vijf aparte regels door. In een contacten-app staat het adres in één record en elke gebeurtenis die aan die persoon hangt werkt automatisch bij. Normalisatie brengt dat idee van één bron naar een relationele database, waarbij data wordt verdeeld over nette tabellen die naar elkaar verwijzen in plaats van waardes rond te kopiëren.

In de praktijk gaat dat in stappen. Eerst trek je herhalende groepen naar hun eigen tabel, daarna zorg je dat elke kolom echt de sleutel van zijn tabel beschrijft en niets anders. Een productentabel bevat productfeiten, een orderstabel bevat orderfeiten, en een order verwijst naar een product via zijn id in plaats van de prijs en naam in elke regel te kopiëren. Pas de prijs één keer aan en de historie blijft eerlijk.

Het voordeel is minder fouten en makkelijker bijwerken. De afweging is dat sterk genormaliseerde data soms meer koppelingen nodig heeft om een rapport samen te stellen, dus ontwerpers wegen netheid tegen snelheid af. Het past natuurlijk bij verstandige keuzes in datastructuur.

Bij TopDevs normaliseren we de database van een klant waar het de inconsistenties voorkomt die stilletjes rapporten breken, en denormaliseren we alleen bewust waar snelheid het echt vraagt.