Översikt
Andra normalformen (2NF) är ett kriterium inom relationsdatabaser som syftar till att minska redundans och undvika uppdaterings-, insättnings- och raderingsanomalier. Formellt kräver 2NF att en tabell först uppfyller första normalformen och att varje icke-nyckelattribut är fullt beroende av hela primärnyckeln, inte bara en del av den. Begreppet används i samband med relationsmodellen när man designar tabeller och relationer.
Krav och definition
För att en relation ska vara i andra normalformen måste två villkor vara uppfyllda:
- Tabellen är i första normalformen (1NF): varje fält innehåller atomära värden och varje rad är unik.
- Inga icke-nyckelattribut får vara partiellt beroende av endast en del av en sammansatt primärnyckel. Med andra ord måste alla icke-nyckelattribut vara beroende av hela primärnyckeln.
Värt att notera är att om primärnyckeln består av endast en kolumn så uppfylls 2NF automatiskt, eftersom partiella beroenden då inte kan förekomma.
Exempel och normaliseringssteg
Ett vanligt exempel är en rad som representerar orderrader med primärnyckeln (OrderID, ProduktID). Om tabellen även innehåller ProduktNamn eller ProduktBeskrivning så beror dessa attribut endast på ProduktID, inte på hela nyckeln. Det är ett partiellt beroende och innebär att tabellen inte är i 2NF. Lösningen är att dela upp informationen i två tabeller: en tabell för orderrader (OrderID, ProduktID, Antal, Pris) och en separat produkttabell (ProduktID, ProduktNamn, ProduktBeskrivning).
Praktisk arbetsgång
- Identifiera primärnyckeln och kontrollera om den är sammansatt.
- Lista icke-nyckelattribut och avgör vilka som är beroende av hela nyckeln eller bara en del.
- Flytta attribut som är partiellt beroende till egna relationer där de är fullt beroende av en nyckel i den nya relationen.
- Uppdatera främmande nycklar för att bevara samband mellan de nya tabellerna.
Relation till andra normalformer och betydelse
Andra normalformen ligger stegvis efter 1NF och före tredje normalformen (3NF). Medan 2NF tar bort partiella beroenden fokuserar 3NF på att eliminera transitiva beroenden (där ett icke-nyckelattribut beror på ett annat icke-nyckelattribut). Tillämpning av 2NF minskar redundans och förbättrar datakonsistens, men kan leda till fler tabeller och fler JOIN-operationer vid frågor.
Användning, för- och nackdelar
Att normalisera till 2NF brukar rekommenderas i databasdesign för att undvika inbyggda fel och onödig dataduplikation. Fördelarna är minskad redundans, enklare underhåll och bättre integritetskontroll. Nackdelarna kan vara mer komplexa frågor och en liten prestandakostnad för JOINs; därför görs ibland avvägningar (denormalisering) i prestandakänsliga system.
För vidare läsning om tabellstruktur och normalformer, se relaterad information om tabeller och första normalformen.