Andre normalform (2NF) er en normalform som brukes i databasenormalisering. En relasjon er på andre normalform hvis den oppfyller følgende to krav:

  1. Det er på første normalform.
  2. Den har ikke noen ikke-primær attributt som er funksjonelt avhengig av noen ekte delmengde av hvilken som helst kandidatnøkkel til relasjonen (altså at den er uten delvise avhengigheter). En ikke-primær attributt for en relasjon er en attributt som ikke er en del av noen kandidatnøkkel til relasjonen.

Enkelt sagt er en relasjon (eller tabell) 2NF hvis:

  1. Den er på 1NF og har en enkeltattributts unik identifikator (EA-UID) (isåfall er hver ikke-nøkkel-attributt avhengig av hele den unike identifikatoren), eller
  2. Den er på 1NF og har en multiattributts unik identifikator (MA-UID), og hver vanlige attributt (ikke en del av UID) er avhengig av alle attributter i multiattributts-UID-en, altså ikke bare en attributt (eller del) av UID.

Dersom noen vanlige (ikke-primære) attributter er forutsigbare (avhengige) av en annen (ikke-primær) attribut, håndteres det i tredje normalform .

Historie rediger

Andre normalform ble opprinnelig definert i 1971 av Edger Frank Codd.[1]

2NF og kandidatnøkler rediger

En funksjonell avhengighet av en ekte delmengde til en kandidatnøkkel (UID) er et brudd på 2NF. I tillegg til primærnøkkelen kan relasjonen inneholde andre kandidatnøkler, og det er nødvendig å fastslå at ingen ikke-primære attributter (vanlige eller ikke-UID-attributter) har delnøkkel-avhengigheter (altså at de er del av noen av disse kandidatnøklene/ UID-ene). Sagt på en annen måte: Hvis noen vanlige attributter (ikke-UID-attributter) er forutsigbare fra en attributt til UID-en (eller del av UID-en) så er den ikke på 2NF.

Dekomponering av 1NF til 2NF rediger

For å gjøre en 1NF-relasjon til en 2NF-relasjon fjernes de funksjonelt avhengige attributtene i de partielle avhengighetene av den første normalform-relasjonen, og disse delvis avhengige attributtene plasseres i en relasjon hvor deres korresponderende determinante attributter utgjør en hel kandidatnøkkel.

Eksempel rediger

Følgende relasjon tilfredsstiller ikke 2NF fordi:

  • Det er en multiattributts unik identifikator bestående av {Produsent} og {Modell}.
  • {Produsentland} er funksjonelt avhengig (forutsigbar) utifra {Produsent}.
  • {Produsentland} er ikke en del av en kandidatnøkkel, og er derfor en ikke-primær-attributt. (Det antas at det er mulig for to produsenter fra samme land å lage ulike typer tannbørster med samme modellnavn, og dermed er {Produsentland, Modell} ikke en kandidatnøkkel selv om paret i gjeldende tabell identifiserer rader unikt.)
  • {Produsent} er en ekte delmengde av kandidatnøkkelen {Produsent, Modell}.

Med andre ord, siden {Produsentland} er en ikke-primær-attributt som er funksjonelt avhengig av en ekte delmengde av en kandidatnøkkel er relasjonen i strid med 2NF.

Modeller av elektriske tannbørster
Produsent Modell Produsentland
Forte X-Prime Italia
Forte Ultrarent Italia
Dent-o-Fresh EZbrush USA
Brushmaster SuperBrush USA
Kobayashi ST-60 Japan
Hoch Toothmaster Tyskland
Hoch X-Prime Tyskland

For å få designet til å samsvare med 2NF er det nødvendig å ha to relasjoner. For å opprette disse relasjonene kan man gjøre følgende:

  1. Fjern de funksjonelt avhengige attributtene fra de partielle avhengighetene til den første normalforms-relasjonen. I dette eksemplet er {Produsentland} den funksjonelt avhengige attributten som vil bli fjernet.
  2. Plasser de partielt avhengige attributtene (altså {Produsentland}) i en relasjon der deres tilsvarende determinante attributter er en kandidatnøkkel (altså {Produsent}).

Som vist nedenfor har {Produsentland} blitt fjernet fra den opprinnelige tabellen:

Modeller av elektriske tannbørster
Produsent Modell
Forte X-Prime
Forte Ultraclean
Dent-o-Fresh EZbrush
Brushmaster SuperBrush
Kobayashi ST-60
Hoch Toothmaster
Hoch X-Prime

Som vist nedenfor settes den den partielle avhengigheten inn i en ny relasjon der avhengigheten kan eksistere uten å være en partiell avhengighet:

Produsenter av elektriske tannbørster
Produsent Produsentland
Forte Italia
Dent-o-Fresh USA
Brushmaster USA
Kobayashi Japan
Hoch Tyskland

Se også rediger

Referanser rediger

  1. ^ Codd, E. F. "Further Normalization of the Data Base Relational Model". (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems", New York City, May 24–25, 1971.) IBM Research Report RJ909 (August 31, 1971). Republished in Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6. Prentice-Hall, 1972.