Normalisering versus denormalisering
Relationele databases bestaan uit relaties (gerelateerde tabellen). Tabellen zijn opgebouwd uit kolommen. Als de tabellen twee grote zijn (d.w.z. te veel kolommen in één tabel), kunnen er databaseafwijkingen optreden. Als de tabellen twee kleine zijn (d.w.z. dat de database uit veel kleinere tabellen bestaat), zou het inefficiënt zijn voor query's. Normalisatie en denormalisatie zijn twee processen die worden gebruikt om de prestaties van de database te optimaliseren. Normalisatie minimaliseert de redundanties die aanwezig zijn in gegevenstabellen. Denormalisatie (omgekeerde normalisatie) voegt redundante gegevens of groepsgegevens toe.
Wat is normalisatie?
Normalisering is een proces dat wordt uitgevoerd om de overtolligheden die aanwezig zijn in gegevens in relationele databases te minimaliseren. Dit proces verdeelt voornamelijk grote tabellen in kleinere tabellen met minder overtolligheden (de zogenaamde "normale vormen"). Deze kleinere tabellen worden aan elkaar gerelateerd door middel van goed gedefinieerde relaties. In een goed genormaliseerde database hoeft voor elke wijziging of wijziging in gegevens slechts één enkele tabel te worden gewijzigd. Eerste normaalvorm (1NF), tweede normaalvorm (2NF) en de derde normaalvorm (3NF) werden geïntroduceerd door Edgar F. Codd. Boyce-Codd Normal Form (BCNF) werd in 1974 geïntroduceerd door Codd en Raymond F. Boyce. Er zijn hogere normaalvormen (4NF, 5NF en 6NF) gedefinieerd, maar deze worden zelden gebruikt.
Een tabel die voldoet aan 1NF verzekert dat het daadwerkelijk een relatie vertegenwoordigt (d.w.z. het bevat geen records die zich herhalen), en bevat geen attributen die relationeel gewaardeerd zijn (d.w.z. het bevat geen records die zich herhalen).e. alle attributen moeten atomaire waarden hebben). Om een tabel te laten voldoen aan 2NF, moet deze voldoen aan 1NF en elk attribuut dat geen deel uitmaakt van een kandidaatsleutel (d.w.z. niet-prime attributen) moet volledig afhankelijk zijn van een van de kandidaatsleutels in de tabel. Volgens de definitie van Codd zou een tabel in 3NF zijn, als en slechts als die tabel in de tweede normaalvorm (2NF) is en elk attribuut in de tabel dat niet tot een kandidaatsleutel behoort, rechtstreeks afhankelijk moet zijn van elke kandidaatsleutel van die tabel. BCNF (ook bekend als 3.5NF) legt enkele anomalieën vast die niet worden aangepakt door de 3NF.
Wat is denormalisatie?
Denormalisatie is het omgekeerde proces van het normalisatieproces. Denormalisatie werkt door redundante gegevens toe te voegen of gegevens te groeperen om de prestaties te optimaliseren. Hoewel het toevoegen van overtollige gegevens contraproductief klinkt, is denormalisatie soms een zeer belangrijk proces om enkele van de tekortkomingen in de relationele databasesoftware te verhelpen die zware prestatiestraffen kunnen opleveren bij genormaliseerde databases (zelfs afgestemd op hogere prestaties). Dit komt omdat het samenvoegen van verschillende relaties (die het resultaat zijn van normalisatie) om een resultaat voor een query te produceren soms traag kan zijn, afhankelijk van de daadwerkelijke fysieke implementatie van de databasesystemen.
Wat is het verschil tussen normalisatie en denormalisatie?
– Normalisatie en denormalisatie zijn twee processen die volledig tegengesteld zijn.
– Normalisatie is het proces van het opdelen van grotere tabellen in kleinere, waardoor de overtollige gegevens worden verminderd, terwijl denormalisatie het proces is van het toevoegen van overtollige gegevens om de prestaties te optimaliseren.
– Normalisatie wordt uitgevoerd om afwijkingen in de database te voorkomen.
– Denormalisatie wordt meestal uitgevoerd om de leesprestaties van de database te verbeteren, maar vanwege de extra beperkingen die worden gebruikt voor denormalisatie, kunnen schrijfbewerkingen (d.w.z. invoeg-, update- en verwijderbewerkingen) langzamer worden. Daarom kan een gedenormaliseerde database slechtere schrijfprestaties bieden dan een genormaliseerde database.
– Het wordt vaak aanbevolen om te "normaliseren totdat het pijn doet, denormaliseren totdat het werkt".