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

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-
.png)
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:
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

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?

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.

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

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
Hvorfor har du brug for en fremmednรธgle?
Antag, at en nybegynder indsรฆtter en post i tabel B som f.eks
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.
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:
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
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










