Normalisatie versus denormalisatie
Relationele databases zijn opgebouwd uit relaties (gerelateerde tabellen). Tabellen zijn opgebouwd uit kolommen. Als de tabellen twee grote (d.w.z. te veel kolommen in één tabel) zijn, kunnen er databaseafwijkingen optreden. Als de tabellen twee klein zijn (d.w.z. de database bestaat uit veel kleinere tabellen), zou het inefficiënt zijn om te ondervragen. Normalisatie en denormalisatie zijn twee processen die worden gebruikt om de prestaties van de database te optimaliseren. Normalisatie minimaliseert de overtolligheden die aanwezig zijn in gegevenstabellen. Denormalisatie (omgekeerd van normalisatie) voegt overbodige gegevens of groepsgegevens toe.
Wat is normalisatie?
Normalisatie 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 redundanties ("Normale formulieren" genoemd). Deze kleinere tabellen zijn aan elkaar gerelateerd door middel van goed gedefinieerde relaties. In een goed genormaliseerde database moet voor elke wijziging of wijziging van gegevens slechts één tabel worden gewijzigd. First Normal Form (1NF), Second Normal Form (2NF) en the Third Normal Form (3NF) werden geïntroduceerd door Edgar F. Codd. Boyce-Codd Normal Form (BCNF) werd in 1974 geïntroduceerd door Codd en Raymond F. Boyce. Hogere normale vormen (4NF, 5NF en 6NF) zijn gedefinieerd, maar ze worden zelden gebruikt.
Een tabel die voldoet aan 1NF verzekert dat deze feitelijk een relatie vertegenwoordigt (dat wil zeggen dat deze geen herhalende records bevat) en geen attributen bevat die een relationele waarde hebben (dat wil zeggen dat alle attributen atoomwaarden moeten hebben). Voor een tabel die voldoet aan 2NF, moet aan 1NF worden voldaan en elk attribuut dat geen deel uitmaakt van een willekeurige kandidaatsleutel (d.w.z. niet-primaire attributen) moet volledig afhangen van een van de kandidaatsleutels in de tabel. Volgens de definitie van Codd is een tabel naar verluidt in 3NF, als en alleen als, die tabel in de tweede normale vorm (2NF) is en elk attribuut in de tabel dat niet tot een kandidaatsleutel behoort direct afhankelijk moet zijn van elke kandidaat-sleutel 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 door gegevens te groeperen om de prestaties te optimaliseren. Hoewel het toevoegen van overtollige gegevens contraproductief klinkt, is denormalisatie soms een zeer belangrijk proces om een aantal van de tekortkomingen in de relationele databasesoftware te omzeilen die zware sancties kunnen opleggen met genormaliseerde databases (zelfs afgestemd op hogere prestaties). Dit komt omdat het samenvoegen van verschillende relaties (die resultaten van normaliseren zijn) 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 waarbij grotere tabellen worden opgesplitst in kleinere, waardoor de overtollige gegevens worden verkleind, terwijl denormalisatie het proces is van het toevoegen van overtollige gegevens om de prestaties te optimaliseren. - Normalisatie wordt uitgevoerd om anomalieën van databases te voorkomen. - Denormalisatie wordt gewoonlijk uitgevoerd om de leesprestaties van de database te verbeteren, maar vanwege de extra beperkingen die worden gebruikt voor denormalisatie, kunnen schrijfbewerkingen (dat wil zeggen invoeg-, bijwerk- en wisbewerkingen) langzamer worden. Daarom kan een gedenormaliseerde database slechtere schrijfprestaties bieden dan een genormaliseerde database. - Het wordt vaak aanbevolen dat u "normaliseert totdat het pijn doet, denormaliseert totdat het werkt".
|