Normalisering vs denormalisering
Relationsdatabaser består af relationer (relaterede tabeller). Tabeller består af kolonner. Hvis tabellerne er to store (dvs. for mange kolonner i en tabel), kan databanomalier forekomme. Hvis tabellerne er to små (dvs. databasen består af mange mindre tabeller), ville den være ineffektiv til forespørgsel. Normalisering og denormalisering er to processer, der bruges til at optimere databasens ydelse. Normalisering minimerer de afskedigelser, der findes i datatabeller. Denormalisering (omvendt af normalisering) tilføjer overflødige data eller gruppedata.
Hvad er normalisering?
Normalisering er en proces, der udføres for at minimere de afskedigelser, der findes i data i relationelle databaser. Denne proces vil primært opdele store tabeller i mindre tabeller med færre afskedigelser (kaldet “Normale former”). Disse mindre tabeller vil være relateret til hinanden gennem veldefinerede forhold. I en godt normaliseret database kræver enhver ændring eller ændring i data kun ændring af en enkelt tabel. Første normal form (1NF), anden normal form (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 formularer (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. at den ikke indeholder nogen poster, der gentager) og ikke indeholder nogen attributter, der er relationelle værdsat (dvs. alle attributterne skal have atomværdier). For at en tabel skal overholde 2NF, skal den overholdes 1NF, og enhver attribut, der ikke er en del af nogen kandidatnøgle (dvs. ikke-primære attributter), skal fuldt ud afhænge af nogen af kandidatnøglerne i tabellen. I henhold til 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 hører til en kandidatnøgle, skal direkte afhænge af hver kandidatnøgle til den tabel. BCNF (også kendt som 3,5NF) fanger nogle af de uregelmæssigheder, der ikke adresseres af 3NF.
Hvad er denormalisering?
Denormalisering er den omvendte proces under normaliseringsprocessen. Denormalisering fungerer ved at tilføje overflødige data eller gruppere data for at optimere ydelsen. Selvom tilføjelse af overflødige data lyder kontraproduktivt, er denormalisering undertiden en meget vigtig proces til at overvinde nogle af manglerne i den relationelle databasesoftware, der kan medføre tunge ydelser med normaliserede databaser (endda afstemt til højere ydelse). Dette skyldes, at sammenkobling af flere relationer (som er resultatet af normalisering) for at producere et resultat til en forespørgsel undertiden kan være langsom afhængig af den faktiske fysiske implementering af databasesystemerne.
Hvad er forskellen mellem normalisering og denormalisering? - Normalisering og denormalisering er to processer, der er helt modsatte. - Normalisering er processen med at opdele større tabeller i mindre dem, der reducerer de overflødige data, mens denormalisering er processen med at tilføje overflødige data for at optimere ydelsen. - Normalisering udføres for at forhindre afvigelser fra databaser. - Denormalisering udføres normalt for at forbedre databasens læseevne, men på grund af de ekstra begrænsninger, der bruges til denormalisering, kan skrivninger (dvs. indsæt, opdater og slet operationer) blive langsommere. Derfor kan en denormaliseret database tilbyde dårligere skriveydelse end en normaliseret database. - Det anbefales ofte, at du "normaliseres, indtil det gør ondt, denormaliserer, indtil det fungerer".
|