Normalization vs Denormalization
Relationella databaser är uppbyggda av relationer (relaterade tabeller). Tabeller är uppbyggda av kolumner. Om tabellerna är två stora (d.v.s. för många kolumner i en tabell) kan databasavvikelser uppstå. Om tabellerna är två små (dvs databasen består av många mindre tabeller) skulle det vara ineffektivt för frågor. Normalisering och denormalisering är två processer som används för att optimera databasens prestanda. Normalisering minimerar de redundanser som finns i datatabeller. Denormalisering (omvänd normalisering) lägger till redundanta data eller gruppdata.
Vad är normalisering?
Normalisering är en process som utförs för att minimera de redundanser som finns i data i relationsdatabaser. Denna process kommer huvudsakligen att dela upp stora tabeller i mindre tabeller med färre redundanser (kallade "normala former"). Dessa mindre tabeller kommer att vara relaterade till varandra genom väldefinierade relationer. I en väl normaliserad databas kommer varje ändring eller modifiering av data att kräva modifiering av endast en enda tabell. Den första normala formen (1NF), den andra normala formen (2NF) och den tredje normala formen (3NF) introducerades av Edgar F. Codd. Boyce-Codd Normal Form (BCNF) introducerades 1974 av Codd och Raymond F. Boyce. Högre normala former (4NF, 5NF och 6NF) har definierats, men de används sällan.
En tabell som överensstämmer med 1NF säkerställer att den faktiskt representerar en relation (dvs. den innehåller inga poster som upprepas) och inte innehåller några attribut som är relationsvärderade (dvs.e. alla attribut ska ha atomvärden). För att en tabell ska överensstämma med 2NF bör den uppfyllas med 1NF och alla attribut som inte är en del av någon kandidatnyckel (dvs. icke-primära attribut) bör vara helt beroende av någon av kandidatnycklarna i tabellen. Enligt Codds definition sägs en tabell vara i 3NF, om och bara om den tabellen är i den andra normala formen (2NF) och varje attribut i tabellen som inte tillhör en kandidatnyckel bör direkt bero på varje kandidatnyckel för den tabellen. BCNF (även känd som 3.5NF) fångar upp några avvikelser som inte åtgärdas av 3NF.
Vad är denormalisering?
Denormalisering är den omvända processen av normaliseringsprocessen. Denormalisering fungerar genom att lägga till redundanta data eller gruppera data för att optimera prestandan. Även om det låter kontraproduktivt att lägga till redundant data, är ibland denormalisering en mycket viktig process för att övervinna några av bristerna i relationsdatabasens programvara som kan medföra stora prestationspåföljder med normaliserade databaser (även inställda för högre prestanda). Detta beror på att sammanfogning av flera relationer (som är resultatet av normalisering) för att producera ett resultat till en fråga ibland kan vara långsam beroende på den faktiska fysiska implementeringen av databassystemen.
Vad är skillnaden mellan normalisering och denormalisering?
– Normalisering och denormalisering är två processer som är helt motsatta.
– Normalisering är processen att dela upp större tabeller i mindre, vilket reducerar redundanta data, medan denormalisering är processen att lägga till redundanta data för att optimera prestanda.
– Normalisering utförs för att förhindra avvikelser i databaserna.
– Denormalisering utförs vanligtvis för att förbättra läsprestandan för databasen, men på grund av de ytterligare begränsningarna som används för denormalisering, kan skrivningar (dvs infoga, uppdatera och ta bort operationer) bli långsammare. Därför kan en denormaliserad databas erbjuda sämre skrivprestanda än en normaliserad databas.
– Det rekommenderas ofta att du ska "normalisera tills det gör ont, denormalisera tills det fungerar".