Andre normalform

From Wikipedia, the free encyclopedia

Remove ads

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 .

Remove ads

Historie

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

2NF og kandidatnøkler

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.

Remove ads

Dekomponering av 1NF til 2NF

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

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.

Mer informasjon Produsent, Modell ...

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:

Mer informasjon Produsent, Modell ...

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

Mer informasjon Produsent, Produsentland ...
Remove ads

Se også

Referanser

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads