Om du har arbetat med databaser ett tag är det troligt att du har hört termen normalisering. Kanske frågade någon dig, «Är den databasen normaliserad?» eller «Finns det i BCNF?» Normalisering anses ofta vara en lyx som bara akademiker har tid för. Att känna till principerna för normalisering och tillämpa dem på dina dagliga databasdesignuppgifter är dock inte så komplicerat, och det kan drastiskt förbättra prestanda för ditt DBMS. I den här artikeln presenterar vi begreppet normalisering och tar en kort titt på de vanligaste normala formerna.
Vad är normalisering?
Normalisering är processen att effektivt organisera data i en databas. Det finns två mål för normaliseringsprocessen: att eliminera överflödig data (till exempel att lagra samma data i mer än en tabell) och se till att databeroenden är vettiga (bara att lagra relaterade data i en tabell). Båda dessa är värda mål, eftersom de minskar mängden utrymme en databas förbrukar och säkerställer att data lagras logiskt.
De normala formerna
Databasgemenskapen har utvecklat en serie riktlinjer för att säkerställa att databaser normaliseras. Dessa kallas normala former och är numrerade från en (den lägsta formen av normalisering, kallad första normalform eller 1NF) till fem (femte normalform eller 5NF). I praktiska tillämpningar ser du ofta 1NF, 2NF och 3NF, tillsammans med enstaka 4NF. Den femte normala formen ses mycket sällan och kommer inte att diskuteras i den här artikeln. Innan vi börjar diskutera de normala formerna är det viktigt att påpeka att de endast är riktlinjer och riktlinjer. Ibland blir det nödvändigt att avvika från dem för att uppfylla praktiska affärsbehov. Men när variationer äger rum är det viktigt att utvärdera eventuella konsekvenser de kan ha på ditt system och ta hänsyn till potentiella inkonsekvenser. Som sagt, låt oss utforska de normala formerna.
Första normala formen (1NF)
First normal form (1NF) anger de grundläggande reglerna för en organiserad databas:
- Eliminera duplicerande kolumner från samma tabell.
- Skapa separata tabeller för varje grupp med relaterad data och identifiera varje rad med en unik kolumn eller uppsättning kolumner (den primära nyckeln).
Andra normala formen (2NF)
Den andra normala formen (2NF) behandlar vidare begreppet att ta bort duplicerande data:
- Uppfyll alla kraven i den första normala formen.
- Ta bort delmängder av data som gäller för flera rader i en tabell och placera dem i separata tabeller.
- Skapa relationer mellan dessa nya tabeller och deras föregångare genom att använda främmande nycklar.
Tredje normala formen (3NF)
Den tredje normala formen (3NF) går ett betydande steg längre:
- Uppfyll alla kraven i den andra normala formen.
- Ta bort kolumner som inte är beroende av den primära nyckeln.
Boyce-Codd Normal Form (BCNF eller 3.5NF)
Boyce-Codd Normal Form, även kallad «normal och tredje (3,5) normalform», lägger till ytterligare ett krav:
- Uppfyll alla kraven i den tredje normala formen.
- Varje determinant måste vara en kandidatnyckel.
Fjärde normalform (4NF)
Slutligen har fjärde normala formen (4NF) ytterligare ett krav:
- Uppfyll alla kraven i den tredje normala formen.
- En relation finns i 4NF om den inte har flera beroenden.
Kom ihåg att dessa normaliseringsriktlinjer är kumulativa. För att en databas ska finnas i 2NF måste den först uppfylla alla kriterierna för en 1NF-databas.
Ska jag normalisera?
Medan databasnormalisering ofta är en bra idé är det inte ett absolut krav. Det finns vissa fall där det är bra att medvetet bryta mot reglerna för normalisering. Om du vill se till att din databas är normaliserad, börja med att lära dig hur du sätter din databas i First Normal Form.