Normalisering organiserer data for at reducere redundans og forbedre integriteten. Målet er at gemme hver kendsgerning én gang. Hvis en kundes adresse vises i hver ordrepost, skal en adresseændring opdateres hundredvis af steder. Hvis du glemmer én, er dataene inkonsistente. Normalisering flytter adressen til en kundetabel. Ordrer refererer til kunden efter ID. Adressen gemmes én gang. Ændr den der, og hver ordre afspejler den nye værdi.
Processen følger normale former. Første normalform eliminerer gentagne grupper. Anden normalform fjerner delvise afhængigheder. Tredje normalform fjerner transitive afhængigheder. Hver form tilføjer begrænsninger, der reducerer redundans yderligere. Højere former findes, men bruges sjældent i praksis. De fleste transaktionelle databaser sigter mod tredje normalform. Normalisering har afvejninger. Flere tabeller betyder flere joins, hvilket kan forsinke forespørgsler. For transaktionelle systemer opvejer integritetsfordelene ydelsesomkostningerne. For analytiske systemer er det modsatte ofte tilfældet. Denormaliserede skemaer med brede tabeller og redundante kolonner forespørger hurtigere, fordi de undgår joins. Derfor bruger datawarehouses stjerne- og snefnugskemaer, der bevidst denormaliserer. Det rette niveau af normalisering afhænger af arbejdsbyrden. Transaktionelle systemer normaliserer. Analytiske systemer denormaliserer. Begge er korrekte til deres formål.
Normale former
- Første normalform — ingen gentagne grupper
- Anden normalform — ingen delvise afhængigheder
- Tredje normalform — ingen transitive afhængigheder
- Boyce-Codd normalform - strengere version af tredje
Normalisering handler om integritet. Gem hver kendsgerning én gang, og dataene forbliver konsistente. Gem dem mange gange, og inkonsistens er uundgåelig.
Comments
No comments yet. Be the first to share a thought.
Leave a comment