Toppfrågor
Tidslinje
Chatt
Perspektiv

Normalform (databaser)

Från Wikipedia, den fria encyklopedin

Remove ads

Normalformer är i samband med relationsdatabaser ett systematiskt sätt att se till att databasstrukturen är lämplig för normala frågedatabaser så att inga oönskade anomalier vid insättning, uppdatering eller borttagning kan ske, och därmed att skydda databasens integritet. De vanligaste är 1NF, 2NF, 3NF och Boyce-Codds normalform (BCNF). Inte lika ofta implementerade är 4NF, 5NF och 6NF. Dessa anger, i ökande grad av strikthet, ett antal krav på databasens utseende. 1NF räcker för skapa en databas, men vid lägre normalform ökar risken för att anomalier när data uppdateras.

För tabeller som ingår i så kallade stjärnscheman i informationslager tillämpar man dock inte normalformerna (annat än kravet på bara ett värde per rad och attribut, vilket de flesta databasmotorer kräver).

Remove ads

Första normalformen (1NF)

Sammanfatta
Perspektiv

Första normalformen innebär att varje cell endast innehåller ett värde.[1] Det förutsätts dessutom att raderna är unika, annars är det ingen tabell.[2]

Exempel på 1NF

Följande tabell är i 1NF då varje cell bara innehåller ett värde. I tabellen är primärnyckeln persnr + avdnr. Då attributen namn och avdnamn bara är beroende av en del av primärnyckeln klarar tabellen inte 2NF.

Mer information persnr, namn ...


Exempel på normalisering

Tabellen innehåller flera värden i varje cell i kolumnen telenr och är därför inte i första normalformen.

Mer information kundnr, kundnamn ...

För att uppfylla 1NF kan telenr sättas i en separat tabell:

Mer information kundnr, kundnamn ...
Mer information kundnr, telenr ...

Nu är kundnr i tabellen KundTelefonnr en främmande nyckel som hänvisar till primärnyckeln i tabellen Kund.

Remove ads

Andra normalformen (2NF)

Sammanfatta
Perspektiv

För att vara i andra normalformen måste tabellen vara i första normalformen. Dessutom får det inte finnas några fullständiga funktionella beroenden från delar av primärnyckeln till attribut i tabellen, och inte heller från delar av av någon annan kandidatnyckel[3]. Ett fullständigt funktionellt beroende innebär dels att ett attribut är beroende av ett eller flera andra attribut, dels att de attribut som styr beroendet är så få som de kan vara utan att beroendet upphör. En kandidatnyckel är ett eller flera attribut som skulle vara en möjlig alternativ primärnyckel.

Exempel på 2NF

I tabellen nedan är regnr primärnyckel och den enda kandidatnyckeln. Då det bara finns ett attribut i nyckeln, kan inga attribut vara beroende av en del av nyckeln. Därför är tabellen i 2NF. Attributet bränsle är beroende av ett icke-nyckel attribut, vilket gör att tabellen inte klarar kraven för 3NF.

Mer information regnr, motor ...


Exempel på normalisering

Sammansatt nyckel för tabellen nedan är anstnr och certifikat. Anstnr eller anstnamn kan inte vara ensam nyckel då det kan finnas dubbletter för olika certifikat. Certifikat kan inte vara ensam nyckel då det kan finnas dubbletter när två anställda har samma certifikat. Attributet anstnamn är beroende av endast en del av den sammansatta nyckeln, nämligen anstnr, vilket gör att tabellen inte är i andra normalformen.

Mer information anstnr, certifikat ...

Problemen kan lösas genom att dela tabellen.

Mer information anstnr, anstnamn ...
Mer information anstnr, certifikat ...
Remove ads

Tredje normalformen (3NF)

För att vara i tredje normalformen, 3NF, måste tabellen vara i andra normalformen. Dessutom får det inte finnas några fullständiga funktionella beroenden mellan attribut utanför primärnyckeln eller någon annan kandidatnyckel, bara från och till nyckeln och delar av den.

Exempel på normalisering

I exemplet nedan är regnr primärnyckel. Bränsletypen är beroende av ett annat attribut, vilken motor som används. Tabellen är därför på andra normalformen men inte i tredje normalformen.

Mer information regnr, motor ...

Problemet kan lösas genom att dela tabellen:

Mer information regnr, motor ...
Mer information motor, bränsle ...

Boyce-Codds normalform

Boyce-Codds normalform, BCNF, är samma som 3NF, med tillägget att det inte får finnas några beroenden från attribut utanför nyckeln in i den. Det fullständiga villkoret är alltså:

För att vara på Boyce-Codds normalform, BCNF, måste tabellen vara i andra normalformen. Dessutom får det inte finnas några fullständiga funktionella beroenden från attribut utanför primärnyckeln eller någon annan kandidatnyckel, bara från hela nyckeln.

Remove ads

Källor

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads