DBMS-normalisering: 1NF, 2NF, 3NF Databaseeksempel

DBMS-normalisering

Normalisering i et nรธtteskall

Normalisering er prosessen med รฅ strukturere en database for รฅ redusere redundans og forbedre konsistens. Enkelt sagt deler den opp store, rotete tabeller i mindre, velorganiserte tabeller. Dette sikrer at data lagres logisk, noe som gjรธr databaser effektive, enkle รฅ vedlikeholde og fri for duplisering eller feil.

Hva er databasenormalisering?

Database Normalisering er en databasedesignteknikk som reduserer dataredundans og eliminerer uรธnskede egenskaper som innsetting, oppdatering og slettingsanomalier. Normaliseringsregler deler stรธrre tabeller inn i mindre tabeller og kobler dem ved hjelp av relasjoner. Formรฅlet med normalisering i SQL er รฅ eliminere redundante (repeterende) data og sikre at data lagres logisk.

Oppfinneren av relasjonsmodell Edgar Codd foreslo teorien om normalisering av data med introduksjonen av den fรธrste normalformen, og han fortsatte รฅ utvide teorien med andre og tredje normalform. Later han ble med Raymond F. Boyce for รฅ utvikle teorien om Boyce-Codd Normal Form.

Hvorfor trenger vi normalisering?

Uten normalisering blir databaser raskt inkonsistente og overflรธdige. Problemer som innsettingsanomalier (ufullstendige poster kan ikke legges til), oppdateringsavvik (endringer pรฅ ett sted gjenspeiles ikke overalt), og slettingsavvik (utilsiktet sletting av data fรธrer ofte til at verdifull informasjon slettes). Normalisering eliminerer disse problemene, sikrer dataintegritet, reduserer duplisering og forenkler databaseadministrasjon.

Hva er typene normalformer i DBMS?

Her er en liste over normale skjemaer i SQL:

  • 1NF (fรธrste normalform): Sikrer at databasetabellen er organisert slik at hver kolonne inneholder atomรฆre (udelelige) verdier, og hver post er unik. Dette eliminerer gjentatte grupper, og strukturerer dermed data i tabeller og kolonner.
  • 2NF (andre normalform): Bygger pรฅ 1NF av Vi mรฅ fjerne overflรธdige data fra en tabell som brukes pรฅ flere rader. og plassere dem i separate tabeller. Det krever at alle ikke-nรธkkelattributter er fullt funksjonelle pรฅ primรฆrnรธkkelen.
  • 3NF (tredje normalform): Utvider 2NF ved รฅ sikre at alle ikke-nรธkkelattributter ikke bare er fullt funksjonelle pรฅ primรฆrnรธkkelen, men ogsรฅ uavhengige av hverandre. Dette eliminerer transitiv avhengighet.
  • BCNF (Boyce-Codd normal form): En foredling av 3NF som adresserer uregelmessigheter som ikke hรฅndteres av 3NF. Det krever at hver determinant er en kandidatnรธkkel, noe som sikrer enda strengere overholdelse av normaliseringsreglene.
  • 4NF (fjerde normalform): Adresserer avhengigheter med flere verdier. Det sikrer at det ikke er flere uavhengige fakta med flere verdier om en enhet i en post.
  • 5NF (femte normalform): Ogsรฅ kjent som "Projection-Join Normal Form" (PJNF), det gjelder rekonstruksjon av informasjon fra mindre, annerledes ordnede databiter.
  • 6NF (Sjette normalform): Teoretisk og lite implementert. Den tar for seg tidsdata (hรฅndterer endringer over tid) ved รฅ dekomponere tabeller ytterligere for รฅ eliminere all ikke-tidsmessig redundans.

Teorien om datanormalisering i MySQL serveren er fortsatt under utvikling. For eksempel er det diskusjoner selv pรฅ 6th Normal form. Men i de fleste praktiske applikasjoner oppnรฅr normalisering sitt beste i 3rd Normal form. Utviklingen av normalisering i SQL-teorier er illustrert nedenfor-

Database normale skjemaer
Database normale skjemaer

Databasenormalisering med eksempler

Database Normaliseringseksempel kan lett forstรฅs ved hjelp av en casestudie. Anta at et videobibliotek opprettholder en database over filmer som er leid ut. Uten normalisering i databasen lagres all informasjon i รฉn tabell som vist nedenfor. La oss forstรฅ normaliseringsdatabase med normaliseringseksempel med lรธsning:

Databasenormalisering med eksempel

Her ser du Filmer leid-kolonnen har flere verdier. La oss nรฅ gรฅ til 1. Normal Forms:

Fรธrste normale form (1NF)

  • Hver tabellcelle skal inneholde รฉn enkelt verdi.
  • Hver post mรฅ vรฆre unik.

Tabellen ovenfor i 1NF-

1NF eksempel

1NF-regler
Eksempel pรฅ 1NF i DBMS

Fรธr vi fortsetter, la oss forstรฅ et par ting -

Hva er en KEY i SQL

A Nร˜KKEL i SQL er en verdi som brukes til รฅ identifisere poster i en tabell unikt. En SQL-nรธkkel er en enkelt kolonne eller kombinasjon av flere kolonner som brukes til รฅ identifisere rader eller tupler i tabellen unikt. SQL Key brukes til รฅ identifisere duplikatinformasjon, og den hjelper ogsรฅ med รฅ etablere et forhold mellom flere tabeller i databasen.

Merk: Kolonner i en tabell som IKKE brukes til รฅ identifisere en post unikt kalles ikke-nรธkkelkolonner.

Hva er en primรฆrnรธkkel?

Primรฆrnรธkkel
Primรฆrnรธkkel i DBMS

En primรฆr er en enkelt kolonneverdi som brukes til รฅ identifisere en databasepost unikt.

Den har fรธlgende attributter

  • A primรฆrnรธkkel kan ikke vรฆre NULL
  • En primรฆrnรธkkelverdi mรฅ vรฆre unik
  • Primรฆrnรธkkelverdiene bรธr sjelden endres
  • Primรฆrnรธkkelen mรฅ gis en verdi nรฅr en ny post settes inn.

Hva er Composite Key?

En sammensatt nรธkkel er en primรฆrnรธkkel som bestรฅr av flere kolonner som brukes til รฅ identifisere en post unikt

I databasen vรฅr har vi to personer med samme navn Robert Phil, men de bor pรฅ forskjellige steder.

Sammensatt nรธkkel i databasen
Sammensatt nรธkkel i databasen

Derfor krever vi bรฅde fullt navn og adresse for รฅ identifisere en post unikt. Det er en sammensatt nรธkkel.

La oss gรฅ inn i andre normalform 2NF

Andre normalform (2NF)

  • Regel 1- Vรฆr i 1NF
  • Regel 2 - Enkeltkolonne primรฆrnรธkkel som ikke er funksjonelt avhengig av noen delsett av kandidatnรธkkelrelasjonen

Det er klart at vi ikke kan gรฅ videre for รฅ lage vรฅr enkle database i 2nd Normaliseringsform med mindre vi deler opp tabellen ovenfor.

2NF-regler

2NF-regler

Vi har delt vรฅrt 1NF-bord i to tabeller, nemlig. Tabell 1 og Tabell 2. Tabell 1 inneholder medlemsinformasjon. Tabell 2 inneholder informasjon om leid filmer.

Vi har introdusert en ny kolonne kalt Membership_id som er primรฆrnรธkkelen for tabell 1. Poster kan identifiseres unikt i Tabell 1 ved hjelp av medlems-ID

Database โ€“ fremmednรธkkel

I tabell 2 er Membership_ID den fremmede nรธkkelen

Database โ€“ fremmednรธkkel

Database โ€“ fremmednรธkkel
Fremmednรธkkel i DBMS

Foreign Key refererer til primรฆrnรธkkelen til en annen tabell! Det hjelper med รฅ koble sammen tabellene dine

  • En fremmednรธkkel kan ha et annet navn enn primรฆrnรธkkelen
  • Det sikrer at rader i en tabell har tilsvarende rader i en annen
  • I motsetning til primรฆrnรธkkelen, trenger de ikke รฅ vรฆre unike. Oftest er de ikke det
  • Fremmednรธkler kan vรฆre null selv om primรฆrnรธkler ikke kan

Database โ€“ fremmednรธkkel

Hvorfor trenger du en fremmednรธkkel?

Anta at en nybegynner setter inn en post i tabell B som f.eks

Hvorfor trenger du en fremmednรธkkel

Du vil kun kunne sette inn verdier i din fremmednรธkkel som finnes i den unike nรธkkelen i den overordnede tabellen. Dette hjelper med referanseintegritet.

Problemet ovenfor kan lรธses ved รฅ erklรฆre medlems-ID fra Tabell2 som fremmednรธkkel for medlems-ID fra Tabell1

Nรฅ, hvis noen prรธver รฅ sette inn en verdi i medlems-ID-feltet som ikke eksisterer i den overordnede tabellen, vil en feil vises!

Hva er transitive funksjonelle avhengigheter?

En transitiv funksjonell avhengighet er nรฅr du endrer en ikke-nรธkkelkolonne, kan fรธre til at noen av de andre ikke-nรธkkelkolonnene endres

Tenk pรฅ tabellen 1. Endring av ikke-nรธkkelkolonnen Fullt navn kan endre hilsen.

Transitive funksjonelle avhengigheter

La oss gรฅ inn i 3NF

Tredje normalform (3NF)

  • Regel 1- Vรฆr i 2NF
  • Regel 2- Har ingen transitive funksjonelle avhengigheter

For รฅ flytte 2NF-tabellen vรฅr til 3NF, mรฅ vi igjen dele bordet vรฅrt.

3NF eksempel

Nedenfor er et 3NF-eksempel i SQL-database:

3NF eksempel

3NF eksempel

3NF eksempel

Vi har igjen delt bordene vรฅre og laget et nytt bord som lagrer hilsener.

Det er ingen transitive funksjonelle avhengigheter, og derfor er tabellen vรฅr i 3NF

I tabell 3 er hilsen-ID primรฆrnรธkkel, og i tabell 1 er hilsen-ID fremmed for primรฆrnรธkkelen i tabell 3

Nรฅ er vรฅrt lille eksempel pรฅ et nivรฅ som ikke kan dekomponeres videre for รฅ oppnรฅ hรธyere normalformtyper av normalisering i DBMS. Faktisk er det allerede i hรธyere normaliseringsformer. Separate anstrengelser for รฅ gรฅ inn pรฅ neste nivรฅ med normalisering av data er vanligvis nรธdvendig i komplekse databaser. Imidlertid vil vi diskutere neste nivรฅer av normalisering i DBMS i korthet i det fรธlgende.

Boyce-Codd normal form (BCNF)

Selv nรฅr en database er i 3rd Normal form, fortsatt vil det vรฆre anomalier hvis den har mer enn รฉn Kandidat Key.

Noen ganger er BCNF ogsรฅ referert til som 3.5 Normalform.

Fjerde normalform (4NF)

Hvis ingen databasetabellforekomst inneholder to eller flere uavhengige og multiverdidata som beskriver den relevante enheten, er den i 4th Normal form.

Femte normalform (5NF)

Et bord er i 5th Normal Form bare hvis den er i 4NF og den ikke kan dekomponeres i et antall mindre tabeller uten tap av data.

Sjette normalform (6NF) foreslรฅtt

6th Normal form er ikke standardisert, men det er imidlertid diskutert av databaseeksperter i noen tid. Forhรฅpentligvis vil vi ha en klar og standardisert definisjon for 6th Normal form i nรฆr fremtid...

Hva er fordelene med normalisering?

  • Forbedre datakonsistens: Normalisering sikrer at hver del av data bare lagres pรฅ ett sted, noe som reduserer sjansene for inkonsistente data. Nรฅr data oppdateres, trenger de bare รฅ oppdateres pรฅ ett sted, noe som sikrer konsistens.
  • Reduser dataredundans: Normalisering hjelper til med รฅ eliminere dupliserte data ved รฅ dele dem inn i flere relaterte tabeller. Dette kan spare lagringsplass og ogsรฅ gjรธre databasen mer effektiv.
  • Forbedre sรธkeytelsen: Normaliserte databaser er ofte lettere รฅ sรธke etter. Fordi data er logisk organisert, kan spรธrringer optimaliseres for รฅ kjรธre raskere.
  • Gjรธr data mer meningsfulle: Normalisering innebรฆrer grupperingping data pรฅ en mรฅte som gir mening og er intuitiv. Dette kan gjรธre databasen enklere รฅ forstรฅ og bruke, spesielt for folk som ikke designet databasen.
  • Reduser sjansene for uregelmessigheter: Avvik er problemer som kan oppstรฅ nรฅr du legger til, oppdaterer eller sletter data. Normalisering kan redusere sjansene for disse anomaliene ved รฅ sikre at data er logisk organisert.

Hva er ulempene med normalisering?

  • ร˜kt kompleksitet: Normalisering kan fรธre til komplekse relasjoner. Et stort antall tabeller med fremmednรธkler kan vรฆre vanskelig รฅ administrere, noe som fรธrer til forvirring.
  • Redusert fleksibilitet: Pรฅ grunn av de strenge reglene for normalisering, kan det vรฆre mindre fleksibilitet i lagring av data som ikke overholder disse reglene.
  • ร˜kte lagringskrav: Mens normalisering reduserer redundans, kan det vรฆre nรธdvendig รฅ tildele mer lagringsplass for รฅ imรธtekomme de ekstra tabellene og indeksene.
  • Ytelsesoverhead: ร… slรฅ sammen flere bord kan vรฆre kostbart med tanke pรฅ ytelse. Jo mer normaliserte dataene er, desto flere sammenfรธyninger er nรธdvendig, noe som kan redusere tiden for datainnhenting.
  • Tap av datakontekst: Normalisering bryter ned data i separate tabeller, noe som kan fรธre til tap av forretningskontekst. ร… undersรธke relaterte tabeller er nรธdvendig for รฅ forstรฅ konteksten til et datastykke.
  • Behov for ekspertkunnskap: Implementering av en normalisert database krever en dyp forstรฅelse av dataene, forholdet mellom data og normaliseringsreglene. Dette krever ekspertkunnskap og kan vรฆre tidkrevende.

Det er alt til SQL-normalisering!!!

Spรธrsmรฅl og svar

Normalisering i DBMS er en prosess for รฅ organisere data i en database for รฅ redusere redundans og forbedre dataintegriteten. Det innebรฆrer รฅ dele opp store tabeller i mindre, relaterte tabeller og definere relasjoner mellom dem. Dette sikrer at data lagres logisk og konsekvent, noe som gjรธr oppdateringer, innsettinger og slettinger mer effektive samtidig som det forhindrer avvik.

Datanormalisering strukturerer databasetabeller for รฅ unngรฅ repetisjon. For eksempel, i stedet for รฅ lagre en kundes adresse i hver ordrepost, plasserer normalisering kundedetaljer i en separat ยซKundeยป-tabell koblet sammen med en nรธkkel. Dette reduserer redundans โ€“ sรฅ hvis en adresse endres, oppdateres den bare รฉn gang. Resultatet er en renere og mer effektiv database med nรธyaktige og konsistente data.

Formรฅlet med normalisering er รฅ eliminere overflรธdige data, minimere avvik og sikre databaseeffektivitet. Det forenkler vedlikehold ved รฅ holdeping organiserer relatert informasjon, reduserer lagringsslรธsing og fremtvinger datakonsistens. Normalisering forbedrer ogsรฅ spรธrringsytelsen ved รฅ strukturere data logisk, slik at utviklere og brukere fรฅr tilgang til nรธyaktig informasjon uten รฅ mรฅtte hรฅndtere duplisering eller motstridende oppfรธringer.

Tredje normalform (3NF) er et normaliseringsstadium som sikrer at alle ikke-nรธkkelattributter kun avhenger av primรฆrnรธkkelen og ikke av andre ikke-nรธkkelattributter. For eksempel, i en ansatttabell, bรธr ยซAvdelingsnavnยป skilles ut i en avdelingstabell i stedet for รฅ stole pรฅ ยซAvdelings-IDยป. Dette unngรฅr transitive avhengigheter, og sikrer nรธyaktighet, konsistens og effektivitet i datahรฅndtering.

Sammendrag

  • Database design er avgjรธrende for vellykket implementering av et databasestyringssystem som oppfyller datakravene til et bedriftssystem.
  • Normalisering i DBMS er en prosess som bidrar til รฅ produsere databasesystemer som er kostnadseffektive og har bedre sikkerhetsmodeller.
  • Funksjonelle avhengigheter er en svรฆrt viktig komponent i normaliseringsdataprosessen
  • De fleste databasesystemer er normaliserte databaser opp til den tredje normalformen i DBMS.
  • En primรฆrnรธkkel identifiserer unikt er registrert i en tabell og kan ikke vรฆre null
  • En fremmednรธkkel hjelper til med รฅ koble til tabellen og refererer til en primรฆrnรธkkel

Oppsummer dette innlegget med: