3.1 Databasenormalisering

Normal form er en egenskap ved en relasjon i en relasjonsdatamodell som karakteriserer den med hensyn til redundans, noe som potensielt kan føre til logisk feilaktige resultater av sampling eller endring av data. Normalform er definert som det settet med krav som en relasjon (tabeller i en database) må tilfredsstille.

Prosessen med å konvertere databaserelasjoner til en form som samsvarer med normale former kalles normalisering. Normalisering er ment å bringe strukturen til databasen til en form som gir minimal logisk redundans , og er ikke ment å redusere eller øke ytelsen, eller redusere eller øke det fysiske volumet til databasen .

Det endelige målet med normalisering er å redusere den potensielle inkonsistensen til informasjonen som er lagret i databasen. Det generelle formålet med normaliseringsprosessen er som følger:

  • utelukkelse av visse typer redundans;
  • fikse noen oppdateringsavvik;
  • utvikling av et databaseprosjekt som er en tilstrekkelig "høykvalitets" representasjon av den virkelige verden, er intuitiv og kan tjene som et godt grunnlag for etterfølgende utvidelse;
  • forenkle prosedyren for å anvende nødvendige integritetsbegrensninger.

Redundans elimineres vanligvis ved å dekomponere relasjoner på en slik måte at bare primærfakta lagres i hver relasjon (det vil si fakta som ikke er avledet fra andre lagrede fakta).

Mens normaliseringsideer er svært nyttige for databasedesign, er de på ingen måte et universelt eller uttømmende middel for å forbedre kvaliteten på en databasedesign. Dette skyldes det faktum at det er for mye variasjon av mulige feil og mangler i databasestrukturen som ikke kan elimineres ved normalisering.

Til tross for disse betraktningene er normaliseringsteorien en svært verdifull prestasjon av relasjonell teori og praksis, siden den gir vitenskapelig strenge og rimelige kriterier for kvaliteten på et databaseprosjekt og formelle metoder for å forbedre denne kvaliteten. Dette gjør at normaliseringsteori skiller seg ut fra de rent empiriske designtilnærmingene som tilbys i andre datamodeller. Dessuten kan det hevdes at det i hele informasjonsteknologifeltet praktisk talt ikke finnes metoder for å evaluere og forbedre designløsninger som er sammenlignbare med teorien om normalisering av relasjonsdatabaser når det gjelder nivået av formell strenghet.

Normalisering blir noen ganger kritisert med den begrunnelse at "det er bare sunn fornuft" og enhver kompetent profesjonell vil "naturligvis" designe en fullstendig normalisert database uten å måtte bruke avhengighetsteori.

Imidlertid, som professor Christopher Date bemerket, er normalisering nettopp prinsippene for sunn fornuft som veileder en moden designer i hans sinn, det vil si at prinsippene for normalisering er formalisert sunn fornuft . I mellomtiden er det å identifisere og formalisere prinsippene for sunn fornuft en svært vanskelig oppgave, og suksess med å løse det er en betydelig prestasjon.

3.2 Første normalform

Første normalform (1NF) er den grunnleggende normalformen for en relasjon i den relasjonsdatamodellen.

En relasjonsvariabel er i første normalform hvis og bare hvis, i en hvilken som helst gyldig verdi av den variabelen, hver relasjonstuppel inneholder nøyaktig én verdi for hver av attributtene.

I en relasjonsmodell er en relasjon alltid i første normalform, per definisjon av relasjonsbegrepet.

Når det gjelder de forskjellige tabellene, kan det hende at de ikke er korrekte representasjoner av relasjoner, og de er derfor ikke i 1NF. I følge Christopher Dates definisjon for et slikt tilfelle, er en tabell normalisert (tilsvarende i første normalform) hvis og bare hvis den er en direkte og sann representasjon av en eller annen relasjon. Mer spesifikt må den aktuelle tabellen tilfredsstille følgende fem betingelser:

  • Det er ingen rekkefølge av rader fra topp til bunn (med andre ord, rekkefølgen på rader formidler ingen informasjon).
  • Det er ingen venstre-til-høyre rekkefølge av kolonnene (med andre ord, rekkefølgen på kolonnene inneholder ingen informasjon).
  • Ingen dupliserte linjer.
  • Hvert skjæringspunkt mellom en rad og en kolonne inneholder nøyaktig én verdi fra det tilsvarende domenet (og ingenting annet).
  • Alle kolonner er "vanlige".

"Regulariteten" til alle kolonnene i en tabell betyr at det ikke er noen "skjulte" komponenter i tabellen som bare kan nås ved påkalling av en spesiell operatør i stedet for å referere til vanlige kolonnenavn, eller som fører til bivirkninger for rader eller tabeller når du bruker standardoperatører.

Den opprinnelige ikke-normaliserte (det vil si ikke en korrekt representasjon av en eller annen relasjon) tabellen:

Ansatt Telefonnummer
Ivanov I.I.

283-56-82

390-57-34

Petrov P.P. 708-62-34
Sidorov S.S.

En tabell redusert til 1NF, som er den korrekte representasjonen av en relasjon:

Ansatt Telefonnummer
Ivanov I.I. 283-56-82
Ivanov I.I. 390-57-34
Petrov P.P. 708-62-34

3.3 Andre normalform

En relasjonsvariabel er i andre normalform hvis og bare hvis den er i første normalform og hvert ikke-nøkkelattributt er irreduserbart avhengig av (hver) dens kandidatnøkkel .

Irreducibility betyr at den potensielle nøkkelen ikke inneholder et mindre delsett av attributter som denne funksjonelle avhengigheten også kan avledes fra. For en irreduserbar funksjonell avhengighet brukes ofte det tilsvarende konseptet "full funksjonell avhengighet".

Hvis kandidatnøkkelen er enkel, det vil si at den består av et enkelt attributt, er enhver funksjonell avhengighet av den irreduserbar (fullstendig). Hvis kandidatnøkkelen er en sammensatt nøkkel, må det i henhold til definisjonen av den andre normalformen ikke være noen ikke-nøkkelattributter i relasjonen som avhenger av en del av den sammensatte kandidatnøkkelen.

Et eksempel på å konvertere en relasjon til andre normalform

La attributtparet {Company branch, Position} danne primærnøkkelen i følgende relasjon:

R
Bedriftsavdeling Jobbtittel Lønn Tilgjengelighet av en datamaskin
Filial i Tomsk Renere 20 000 Nei
avdeling i Moskva Programmerer 40 000 Spise
Filial i Tomsk Programmerer 25 000 Spise

La oss si at lønnen avhenger av grenen og stillingen, og tilgjengeligheten til en datamaskin avhenger bare av stillingen.

Det er en funksjonell avhengighet Posisjon -> Å ha en datamaskin, der venstre side (determinant) bare er en del av primærnøkkelen, som bryter med tilstanden til den andre normalformen.

For å redusere til 2NF, bør den opprinnelige relasjonen dekomponeres i to relasjoner:

R1
Bedriftsavdeling Jobbtittel Lønn
Filial i Tomsk Renere 20 000
avdeling i Moskva Programmerer 40 000
Filial i Tomsk Programmerer 25 000
R2
Jobbtittel Tilgjengelighet av en datamaskin
Renere Nei
Programmerer Spise
Programmerer Spise

3.4 Tredje normalform (3NF)

En relasjonsvariabel R er i 3NF hvis og bare hvis følgende betingelser er oppfylt:

  • Rer i andre normalform.
  • ingen ikke-nøkkelattributtRer ikke i transitiv funksjonell avhengighet av kandidatnøkkelenR.

Forklaringer til definisjonen:

Et ikke-nøkkelattributt til en relasjon R er et attributt som ikke tilhører noen av kandidatnøklene til R.

Den funksjonelle avhengigheten til settet med attributter Z på settet med attributter X (skrevet X → Z, uttalt "x bestemmer z") er transitiv hvis det er et slikt sett med attributter Y at X → Y og Y → Z. I denne tilfelle, ingen av mengdene X, Y og Z er ikke en delmengde av den andre, dvs. de funksjonelle avhengighetene X → Z, X → Y og Y → Z er ikke trivielle, og det er heller ingen funksjonell avhengighet Y → X.

En definisjon av 3NF, tilsvarende Codds, men formulert annerledes, ble gitt av Carlo Zaniolo i 1982. I følge den er en relasjonsvariabel i 3NF hvis og bare hvis hver av dens funksjonelle avhengigheter X → A tilfredsstiller minst én av følgende betingelser:

  • X inneholder A (det vil si X → A er en triviell funksjonell avhengighet)
  • X - supernøkkel
  • A er et nøkkelattributt (det vil si at A er en del av en kandidatnøkkel).

Zaniolos definisjon definerer klart forskjellen mellom 3NF og den mer stringente Boyce-Codd Normal Form (BCNF): BCNF ekskluderer den tredje betingelsen ("A er en nøkkelattributt").

Et minneverdig og tradisjonelt beskrivende sammendrag av Codds 3NF-definisjon ble gitt av Bill Kent: hvert ikke-nøkkelattributt "skal gi informasjon om nøkkelen, den fullstendige nøkkelen og ingenting annet enn nøkkelen " .

Betingelsen for å være avhengig av "full nøkkel" av ikke-nøkkelattributter sikrer at relasjonen er i andre normalform; og betingelsen for at de skal være avhengige av «ingenting annet enn nøkkelen» er at de er i tredje normalform.

Chris Date snakker om Kents oppsummering som en "intuitivt attraktiv funksjon" av 3NF, og observerer at den, med en liten modifikasjon, også kan tjene som en definisjon av den strengere Boyce-Codd normalformen: "hver attributt må gi informasjon om en nøkkel , en full nøkkel, og verken noe annet enn nøkkelen.

Kents versjon av 3NF-definisjonen er mindre streng enn Boyce-Codd normalformversjonen av Datas formulering, siden førstnevnte bare sier at ikke-nøkkelattributter avhenger av nøkler.

Primære attributter (som er nøkler eller deler av dem) trenger ikke være funksjonelt avhengige i det hele tatt; hver av dem gir informasjon om nøkkelen ved å oppgi selve nøkkelen eller deler av den. Det skal bemerkes her at denne regelen bare er gyldig for ikke-nøkkelattributter, siden bruk av den på alle attributter vil fullstendig deaktivere alle komplekse alternative nøkler, siden hvert element i en slik nøkkel vil bryte betingelsen "full nøkkel".

Tenk på relasjonsvariabelen R1 som et eksempel:

R1
Ansatt Avdeling Telefon
Grishin Regnskap 11-22-33
Vasiliev Regnskap 11-22-33
Petrov Forsyning 44-55-66

Hver ansatt tilhører utelukkende én avdeling; hver avdeling har én telefon. Employee-attributtet er hovednøkkelen. Ansatte har ikke personlige telefoner, og den ansattes telefonnummer avhenger utelukkende av avdelingen.

I eksemplet eksisterer følgende funksjonelle avhengigheter: Ansatt → Avdeling, Avdeling → Telefon, Ansatt → Telefon.

Relasjonsvariabelen R1 er i andre normalform fordi hver attributt har en irreduserbar funksjonell avhengighet av den potensielle nøkkelen Employee.

Forholdet Ansatt → Telefon er transitivt, så forholdet er ikke i tredje normalform.

Å dele R1 resulterer i to relasjonsvariabler som er i 3NF:

R2
Avdeling Telefon
Regnskap 11-22-33
Forsyning 44-55-66

R3
Ansatt Avdeling
Grishin Regnskap
Vasiliev Regnskap
Petrov Forsyning

Den innledende relasjonen R1, om nødvendig, oppnås lett som et resultat av operasjonen med å forbinde relasjonene R2 og R3.