Normalisatie versus denormalisatie
Relationele databases zijn opgebouwd uit relaties (gerelateerde tabellen). Tabellen zijn opgebouwd uit kolommen. Als de tabellen twee groot zijn (dwz te veel kolommen in één tabel), kunnen er database-anomalieën optreden. Als de tabellen twee kleine zijn (dwz de database bestaat uit veel kleinere tabellen), zou het inefficiënt zijn om te zoeken. 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 (omkering van normalisatie) voegt overtollige 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 zal voornamelijk grote tabellen opsplitsen in kleinere tabellen met minder redundanties ("normale formulieren" genoemd). Deze kleinere tabellen zullen aan elkaar gerelateerd zijn door middel van goed gedefinieerde relaties. In een goed genormaliseerde database vereist elke wijziging of wijziging van gegevens slechts een enkele tabel. Eerste normale vorm (1NF), tweede normale vorm (2NF) en de derde normale vorm (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 normale vormen (4NF, 5NF en 6NF) gedefinieerd, maar deze worden zelden gebruikt.
Een tabel die voldoet aan 1NF verzekert dat het werkelijk een relatie vertegenwoordigt (dwz dat het geen herhalende records bevat), en geen attributen bevat die relationeel gewaardeerd zijn (dwz alle attributen zouden atomaire waarden moeten hebben). Om te voldoen aan 2NF, moet een tabel voldoen aan 1NF en elk attribuut dat geen deel uitmaakt van een kandidaatsleutel (dwz niet-primaire attributen) moet volledig afhangen van een van de kandidaatsleutels in de tabel. Volgens de definitie van Codd zou een tabel zich in 3NF bevinden, als en slechts als die tabel de tweede normaalvorm (2NF) heeft en elk attribuut in de tabel dat niet tot een kandidaatsleutel behoort, rechtstreeks afhankelijk moet zijn van elke kandidaat-sleutel van die tafel. 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 bij genormaliseerde databases (zelfs afgestemd op hogere prestaties) zware prestatieverbeteringen kunnen opleveren. Dit komt doordat 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 feitelijke 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 in kleinere worden verdeeld, waardoor de overtollige gegevens worden verminderd, terwijl denormalisatie het proces is waarbij overtollige gegevens worden toegevoegd om de prestaties te optimaliseren. - Normalisatie wordt uitgevoerd om anomalieën in databases 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 (dwz invoegen, bijwerken en verwijderen) 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”. |