DBMS-normalisering: 1NF, 2NF, 3NF Databaseeksempel
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-
.png)
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:
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

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?

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.

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.
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

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
Hvorfor trenger du en fremmednรธkkel?
Anta at en nybegynner setter inn en post i tabell B som f.eks
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.
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:
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
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











