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

DBMS-normalisering

Normalisering i en nรธddeskal

Normalisering er processen med at strukturere en database for at reducere redundans og forbedre konsistens. Kort sagt opdeler den store, rodede tabeller i mindre, velorganiserede tabeller. Dette sikrer, at data lagres logisk, hvilket gรธr databaser effektive, nemme at vedligeholde og fri for duplikering eller fejl.

Hvad er databasenormalisering?

Databasenormalisering er en databasedesignteknik, der reducerer dataredundans og eliminerer uรธnskede karakteristika som indsรฆttelses-, opdaterings- og sletningsanomalier. Normaliseringsregler opdeler stรธrre tabeller i mindre tabeller og sammenkรฆder dem ved hjรฆlp af relationer. Formรฅlet med normalisering i SQL er at eliminere overflรธdige (gentagne) data og sikre, at data lagres logisk.

Opfinderen af relationel model Edgar Codd foreslog teorien om normalisering af data med introduktionen af โ€‹โ€‹den fรธrste normale form, og han fortsatte med at udvide teorien med den anden og tredje normale form. Later han sluttede sig til Raymond F. Boyce for at udvikle teorien om Boyce-Codd Normal Form.

Hvorfor har vi brug for normalisering?

Uden normalisering bliver databaser hurtigt inkonsistente og overflรธdige. Problemer som indsรฆttelsesanomalier (ufuldstรฆndige poster kan ikke tilfรธjes), opdateringsanomalier (รฆndringer รฉt sted afspejles ikke alle steder), og sletningsanomalier (fjernelse af data sletter vรฆrdifulde oplysninger ved et uheld) forekommer ofte. Normalisering eliminerer disse problemer, hvilket sikrer dataintegritet, reducerer dobbeltarbejde og forenkler databaseadministration.

Hvad er typerne af normalformer i DBMS?

Her er en liste over normale former i SQL:

  • 1NF (First Normal Form): Sikrer, at databasetabellen er organiseret sรฅdan, at hver kolonne indeholder atomare (udelelige) vรฆrdier, og hver post er unik. Dette eliminerer gentagne grupper og strukturerer derved data i tabeller og kolonner.
  • 2NF (anden normalform): Bygger pรฅ 1NF af Vi skal fjerne overflรธdige data fra en tabel, der anvendes pรฅ flere rรฆkker. og placere dem i separate tabeller. Det krรฆver, at alle ikke-nรธgle-attributter er fuldt funktionelle pรฅ den primรฆre nรธgle.
  • 3NF (tredje normalform): Udvider 2NF ved at sikre, at alle ikke-nรธgleattributter ikke kun er fuldt funktionelle pรฅ den primรฆre nรธgle, men ogsรฅ uafhรฆngige af hinanden. Dette eliminerer transitiv afhรฆngighed.
  • BCNF (Boyce-Codd normal form): En forfining af 3NF, der adresserer uregelmรฆssigheder, der ikke hรฅndteres af 3NF. Det krรฆver, at enhver determinant er en kandidatnรธgle, hvilket sikrer en endnu strengere overholdelse af normaliseringsreglerne.
  • 4NF (Fjerde Normal Form): Lรธser afhรฆngigheder med flere vรฆrdier. Det sikrer, at der ikke er flere uafhรฆngige fakta med flere vรฆrdier om en enhed i en post.
  • 5NF (femte normalform): Ogsรฅ kendt som "Projection-Join Normal Form" (PJNF), Det vedrรธrer rekonstruktion af information fra mindre, forskelligt arrangerede datastykker.
  • 6NF (Sjette Normal Form): Teoretisk og ikke bredt implementeret. Den beskรฆftiger sig med tidsmรฆssige data (hรฅndtering af รฆndringer over tid) ved yderligere at dekomponere tabeller for at eliminere al ikke-tidsbestemt redundans.

Teorien om datanormalisering i MySQL serveren er stadig under udvikling. For eksempel er der diskussioner selv den 6th Normal Form. Men i de fleste praktiske applikationer opnรฅr normalisering sit bedste i 3rd Normal form. Udviklingen af โ€‹โ€‹normalisering i SQL-teorier er illustreret nedenfor-

Database normale formularer
Database normale formularer

Databasenormalisering med eksempler

Database Normaliseringseksempel kan let forstรฅs ved hjรฆlp af et casestudie. Antag, at et videobibliotek vedligeholder en database over lejede film. Uden normalisering i databasen gemmes al information i รฉn tabel som vist nedenfor. Lad os forstรฅ normaliseringsdatabase med normaliseringseksempel med lรธsning:

Databasenormalisering med eksempel

Her ser du Kolonnen Lejede film har flere vรฆrdier. Lad os nu gรฅ ind i 1. Normal Forms:

Fรธrste normale form (1NF)

  • Hver tabelcelle skal indeholde en enkelt vรฆrdi.
  • Hver post skal vรฆre unik.

Ovenstรฅende tabel i 1NF-

1NF eksempel

1NF regler
Eksempel pรฅ 1NF i DBMS

Fรธr vi fortsรฆtter, lad os forstรฅ et par ting โ€“

Hvad er en KEY i SQL

A Nร˜GLE i SQL er en vรฆrdi, der bruges til at identificere poster i en tabel entydigt. En SQL KEY er en enkelt kolonne eller kombination af flere kolonner, der bruges til entydigt at identificere rรฆkker eller tupler i tabellen. SQL Key bruges til at identificere duplikerede oplysninger, og det hjรฆlper ogsรฅ med at etablere en relation mellem flere tabeller i databasen.

Bemรฆrk: Kolonner i en tabel, der IKKE bruges til at identificere en post entydigt, kaldes ikke-nรธglekolonner.

Hvad er en primรฆr nรธgle?

Primรฆrnรธgle
Primรฆr nรธgle i DBMS

En primรฆr er en enkelt kolonnevรฆrdi, der bruges til at identificere en databasepost unikt.

Den har fรธlgende egenskaber

  • A primรฆrnรธgle kan ikke vรฆre NULL
  • En primรฆr nรธglevรฆrdi skal vรฆre unik
  • De primรฆre nรธglevรฆrdier bรธr sjรฆldent รฆndres
  • Den primรฆre nรธgle skal have en vรฆrdi, nรฅr en ny post indsรฆttes.

Hvad er Composite Key?

En sammensat nรธgle er en primรฆr nรธgle sammensat af flere kolonner, der bruges til at identificere en post unikt

I vores database har vi to personer med samme navn Robert Phil, men de bor forskellige steder.

Sammensat nรธgle i databasen
Sammensat nรธgle i databasen

Derfor krรฆver vi bรฅde fulde navn og adresse for at identificere en post unikt. Det er en sammensat nรธgle.

Lad os gรฅ ind i anden normalform 2NF

Anden normal form (2NF)

  • Regel 1- Vรฆr i 1NF
  • Regel 2 - Enkeltkolonne primรฆrnรธgle, der ikke er funktionelt afhรฆngig af nogen delmรฆngde af kandidatnรธglerelationen

Det er klart, at vi ikke kan komme videre med at lave vores simple database i 2nd Normaliseringsform, medmindre vi opdeler tabellen ovenfor.

2NF regler

2NF regler

Vi har delt vores 1NF-bord op i to borde, dvs. Tabel 1 og Tabel 2. Tabel 1 indeholder medlemsoplysninger. Tabel 2 indeholder oplysninger om lejede film.

Vi har introduceret en ny kolonne kaldet Membership_id, som er den primรฆre nรธgle til tabel 1. Records kan identificeres entydigt i tabel 1 ved hjรฆlp af medlems-id

Database โ€“ fremmednรธgle

I tabel 2 er Membership_ID den fremmede nรธgle

Database โ€“ fremmednรธgle

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

Foreign Key refererer til den primรฆre nรธgle i en anden tabel! Det hjรฆlper med at forbinde dine borde

  • En fremmednรธgle kan have et andet navn end dens primรฆre nรธgle
  • Det sikrer, at rรฆkker i รฉn tabel har tilsvarende rรฆkker i en anden
  • I modsรฆtning til den primรฆre nรธgle behรธver de ikke at vรฆre unikke. Oftest er de ikke
  • Fremmednรธgler kan vรฆre nul, selvom primรฆrnรธgler ikke kan

Database โ€“ fremmednรธgle

Hvorfor har du brug for en fremmednรธgle?

Antag, at en nybegynder indsรฆtter en post i tabel B som f.eks

Hvorfor har du brug for en fremmednรธgle

Du vil kun vรฆre i stand til at indsรฆtte vรฆrdier i din fremmednรธgle, som findes i den unikke nรธgle i den overordnede tabel. Dette hjรฆlper med referentiel integritet.

Ovenstรฅende problem kan lรธses ved at erklรฆre medlems-id fra tabel2 som fremmednรธgle til medlems-id fra tabel1

Nu, hvis nogen forsรธger at indsรฆtte en vรฆrdi i medlemskabs-id-feltet, som ikke findes i den overordnede tabel, vil der blive vist en fejl!

Hvad er transitive funktionelle afhรฆngigheder?

En transitiv funktionel afhรฆngighed er, nรฅr du รฆndrer en ikke-nรธglekolonne, kan forรฅrsage, at enhver af de andre ikke-nรธglekolonner รฆndres

Overvej tabellen 1. ร†ndring af ikke-nรธglekolonnen Fuldt navn kan รฆndre hilsen.

Transitive funktionelle afhรฆngigheder

Lad os gรฅ ind i 3NF

Tredje normale form (3NF)

  • Regel 1- Vรฆr i 2NF
  • Regel 2- Har ingen transitive funktionelle afhรฆngigheder

For at flytte vores 2NF-bord til 3NF, skal vi igen opdele vores bord.

3NF eksempel

Nedenfor er et 3NF eksempel i SQL database:

3NF eksempel

3NF eksempel

3NF eksempel

Vi har igen delt vores borde op og lavet et nyt bord, som gemmer salutations.

Der er ingen transitive funktionelle afhรฆngigheder, og derfor er vores tabel i 3NF

I tabel 3 er hilsen-id primรฆrnรธgle, og i tabel 1 er hilsen-id fremmed for primรฆrnรธgle i tabel 3

Nu er vores lille eksempel pรฅ et niveau, der ikke kan dekomponeres yderligere for at opnรฅ hรธjere normal form for normalisering i DBMS. Faktisk er det allerede i hรธjere normaliseringsformer. Separate bestrรฆbelser pรฅ at flytte ind pรฅ nรฆste niveauer af normalisering af data er normalt nรธdvendige i komplekse databaser. Vi vil dog kort diskutere nรฆste niveauer af normalisering i DBMS i det fรธlgende.

Boyce-Codd normal form (BCNF)

Selv nรฅr en database er i 3rd Normal form, der ville stadig vรฆre anomalier, hvis den har mere end รฉn Kandidat Nรธgle.

Nogle gange kaldes BCNF ogsรฅ 3.5 Normalform.

Fjerde normal form (4NF)

Hvis ingen databasetabelforekomst indeholder to eller flere uafhรฆngige data med flere vรฆrdier, der beskriver den relevante enhed, er den i 4th Normal Form.

Femte normale form (5NF)

Et bord er i 5th Normal Form kun hvis den er i 4NF og den ikke kan dekomponeres i et hvilket som helst antal mindre tabeller uden tab af data.

Sjette normalform (6NF) foreslรฅet

6th Normal Form er ikke standardiseret, men det er dog blevet diskuteret af databaseeksperter i nogen tid. Forhรฅbentlig ville vi have en klar og standardiseret definition for 6th Normal form i nรฆr fremtid...

Hvad er fordelene ved normalisering?

  • Forbedre datakonsistens: Normalisering sikrer, at hvert stykke data kun gemmes รฉt sted, hvilket reducerer chancerne for inkonsistente data. Nรฅr data opdateres, skal de kun opdateres รฉt sted, hvilket sikrer konsistens.
  • Reducer dataredundans: Normalisering hjรฆlper med at eliminere duplikerede data ved at opdele dem i flere relaterede tabeller. Dette kan spare lagerplads og ogsรฅ gรธre databasen mere effektiv.
  • Forbedre forespรธrgselsydeevne: Normaliserede databaser er ofte nemmere at forespรธrge pรฅ. Fordi data er organiseret logisk, kan forespรธrgsler optimeres til at kรธre hurtigere.
  • Gรธr data mere meningsfulde: Normalisering involverer grupperingping data pรฅ en mรฅde, der giver mening og er intuitiv. Dette kan gรธre databasen nemmere at forstรฅ og bruge, isรฆr for folk, der ikke selv har designet databasen.
  • Reducer chancerne for uregelmรฆssigheder: Anomalier er problemer, der kan opstรฅ ved tilfรธjelse, opdatering eller sletning af data. Normalisering kan reducere chancerne for disse anomalier ved at sikre, at data er logisk organiseret.

Hvad er ulemperne ved normalisering?

  • ร˜get kompleksitet: Normalisering kan fรธre til komplekse relationer. Et stort antal tabeller med fremmednรธgler kan vรฆre vanskelige at administrere, hvilket fรธrer til forvirring.
  • Reduceret fleksibilitet: Pรฅ grund af de strenge regler for normalisering kan der vรฆre mindre fleksibilitet i lagring af data, der ikke overholder disse regler.
  • ร˜gede lagerkrav: Mens normalisering reducerer redundans, kan det vรฆre nรธdvendigt at allokere mere lagerplads for at rumme de ekstra tabeller og indekser.
  • Overhead over ydeevne: At samle flere borde kan vรฆre dyrt med hensyn til ydeevne. Jo mere normaliserede data, jo flere joinforbindelser er nรธdvendige, hvilket kan sรฆnke datahentningstider.
  • Tab af datakontekst: Normalisering opdeler data i separate tabeller, hvilket kan fรธre til tab af forretningskontekst. Det er nรธdvendigt at undersรธge relaterede tabeller for at forstรฅ konteksten af โ€‹โ€‹et stykke data.
  • Behov for ekspertviden: Implementering af en normaliseret database krรฆver en dyb forstรฅelse af dataene, relationerne mellem data og normaliseringsreglerne. Dette krรฆver ekspertviden og kan vรฆre tidskrรฆvende.

Det er alt til SQL Normalisering!!!

Ofte Stillede Spรธrgsmรฅl

Normalisering i DBMS er en proces til at organisere data i en database for at reducere redundans og forbedre dataintegriteten. Det involverer at opdele store tabeller i mindre, relaterede tabeller og definere relationer mellem dem. Dette sikrer, at data gemmes logisk og konsekvent, hvilket gรธr opdateringer, indsรฆttelser og sletninger mere effektive, samtidig med at anomalier forhindres.

Datanormalisering strukturerer databasetabeller for at undgรฅ gentagelse. For eksempel placerer normalisering kundeoplysninger i en separat "Kunde"-tabel, der er forbundet med en nรธgle, i stedet for at gemme en kundes adresse i hver ordrepost. Dette reducerer redundans โ€“ sรฅ hvis en adresse รฆndres, opdateres den kun รฉn gang. Resultatet er en renere og mere effektiv database med nรธjagtige og ensartede data.

Formรฅlet med normalisering er at eliminere overflรธdige data, minimere anomalier og sikre databaseeffektivitet. Det forenkler vedligeholdelse ved at holdeping organiserer relateret information, reducerer lagerspild og hรฅndhรฆver datakonsistens. Normalisering forbedrer ogsรฅ forespรธrgselsydelsen ved at strukturere data logisk, hvilket giver udviklere og brugere adgang til nรธjagtige oplysninger uden at skulle hรฅndtere dobbeltarbejde eller modstridende poster.

Tredje normalform (3NF) er et normaliseringstrin, der sikrer, at alle ikke-nรธgleattributter kun afhรฆnger af den primรฆre nรธgle og ikke af andre ikke-nรธgleattributter. For eksempel bรธr "Afdelingsnavn" i en medarbejdertabel opdeles i en afdelingstabel i stedet for at stole pรฅ "Afdelings-ID". Dette undgรฅr transitive afhรฆngigheder og sikrer nรธjagtighed, konsistens og effektivitet i datahรฅndtering.

Resumรฉ

  • Database design er afgรธrende for en vellykket implementering af et databasestyringssystem, der opfylder datakravene i et virksomhedssystem.
  • Normalisering i DBMS er en proces, der hjรฆlper med at producere databasesystemer, der er omkostningseffektive og har bedre sikkerhedsmodeller.
  • Funktionelle afhรฆngigheder er en meget vigtig komponent i normaliseringsdataprocessen
  • De fleste databasesystemer er normaliserede databaser op til den tredje normale form i DBMS.
  • En primรฆr nรธgle identificerer entydigt er registreret i en tabel og kan ikke vรฆre null
  • En fremmednรธgle hjรฆlper med at forbinde tabel og refererer til en primรฆr nรธgle

Opsummer dette indlรฆg med: