Normalisering vs. denormalisering
Relationelle databaser består af relationer (relaterede tabeller). Tabeller er opbygget af kolonner. Hvis tabellerne er to store (dvs. for mange kolonner i en tabel), kan der forekomme databaseanomalier. Hvis tabellerne er to små (dvs. databasen består af mange mindre tabeller), ville det være ineffektivt til forespørgsler. Normalisering og denormalisering er to processer, der bruges til at optimere databasens ydeevne. Normalisering minimerer de redundanser, der er til stede i datatabeller. Denormalisering (omvendt af normalisering) tilføjer redundante data eller gruppedata.
Hvad er normalisering?
Normalisering er en proces, der udføres for at minimere de redundanser, der er til stede i data i relationelle databaser. Denne proces vil hovedsageligt opdele store tabeller i mindre tabeller med færre redundanser (kaldet "normale former"). Disse mindre tabeller vil være relateret til hinanden gennem veldefinerede relationer. I en velnormaliseret database vil enhver ændring eller modifikation af data kun kræve ændring af en enkelt tabel. Den første normalform (1NF), den anden normalform (2NF) og den tredje normale form (3NF) blev introduceret af Edgar F. Codd. Boyce-Codd Normal Form (BCNF) blev introduceret i 1974 af Codd og Raymond F. Boyce. Højere normale former (4NF, 5NF og 6NF) er blevet defineret, men de bruges sjældent.
En tabel, der overholder 1NF, sikrer, at den faktisk repræsenterer en relation (dvs. den indeholder ingen poster, der gentager sig), og ikke indeholder nogen attributter, der er relationel værdifulde (dvs.e. alle attributterne skal have atomværdier). For at en tabel skal overholde 2NF, skal den overholdes med 1NF, og enhver egenskab, der ikke er en del af en kandidatnøgle (dvs. ikke-primære attributter), bør fuldt ud afhænge af enhver af kandidatnøglerne i tabellen. Ifølge Codd's definition siges en tabel at være i 3NF, hvis og kun hvis den tabel er i den anden normale form (2NF), og hver attribut i tabellen, der ikke tilhører en kandidatnøgle, skulle direkte afhænge af hver kandidatnøgle for den tabel. BCNF (også kendt som 3.5NF) fanger nogle af de anomalier, som ikke er rettet af 3NF.
Hvad er denormalisering?
Denormalisering er den omvendte proces af normaliseringsprocessen. Denormalisering fungerer ved at tilføje redundante data eller gruppere data for at optimere ydeevnen. Selvom tilføjelse af overflødige data lyder kontraproduktivt, er denormalisering nogle gange en meget vigtig proces for at overvinde nogle af manglerne i relationsdatabasesoftwaren, der kan medføre store ydeevnestraffe med normaliserede databaser (selv indstillet til højere ydeevne). Dette skyldes, at sammenføjning af flere relationer (som er resultatet af normalisering) for at producere et resultat til en forespørgsel nogle gange kan være langsom afhængigt af den faktiske fysiske implementering af databasesystemerne.
Hvad er forskellen mellem normalisering og denormalisering?
– Normalisering og denormalisering er to processer, der er fuldstændig modsatte.
– Normalisering er processen med at opdele større tabeller i mindre, hvilket reducerer de redundante data, mens denormalisering er processen med at tilføje redundante data for at optimere ydeevnen.
– Normalisering udføres for at forhindre databaseanomalier.
– Denormalisering udføres norm alt for at forbedre databasens læseydeevne, men på grund af de yderligere begrænsninger, der bruges til denormalisering, kan skrivninger (dvs. indsætte, opdatere og slette operationer) blive langsommere. Derfor kan en denormaliseret database tilbyde dårligere skriveydelse end en normaliseret database.
– Det anbefales ofte, at du skal "normalisere, indtil det gør ondt, denormalisere, indtil det virker".