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

Normalisering i ett nรถtskal
Normalisering รคr processen att strukturera en databas fรถr att minska redundans och fรถrbรคttra konsistens. Enkelt uttryckt delar den upp stora, rรถriga tabeller i mindre, vรคlorganiserade tabeller. Detta sรคkerstรคller att data lagras logiskt, vilket gรถr databaser effektiva, enkla att underhรฅlla och fria frรฅn dubbelarbete eller fel.
Vad รคr databasnormalisering?
Databas Normalisering รคr en databasdesignteknik som minskar dataredundans och eliminerar oรถnskade egenskaper som infogning, uppdatering och raderingsavvikelser. Normaliseringsregler delar in stรถrre tabeller i mindre tabeller och lรคnkar dem med hjรคlp av relationer. Syftet med normalisering i SQL รคr att eliminera redundanta (repetitiva) data och sรคkerstรคlla att data lagras logiskt.
Uppfinnaren av relationsmodell Edgar Codd fรถreslog teorin om normalisering av data med infรถrandet av den fรถrsta normala formen, och han fortsatte att utรถka teorin med den andra och tredje normalformen. Later han gick med Raymond F. Boyce fรถr att utveckla teorin om Boyce-Codds normala form.
Varfรถr behรถver vi normalisering?
Utan normalisering blir databaser snabbt inkonsekventa och redundanta. Problem som insรคttningsanomalier (ofullstรคndiga poster kan inte lรคggas till), uppdatera avvikelser (fรถrรคndringar pรฅ ett stรคlle รฅterspeglas inte รถverallt), och raderingsavvikelser (om man av misstag tar bort data raderas vรคrdefull information) fรถrekommer ofta. Normalisering eliminerar dessa problem, vilket sรคkerstรคller dataintegritet, minskar dubbelarbete och fรถrenklar databashanteringen.
Vilka typer av normalformer finns i DBMS?
Hรคr รคr en lista รถver normala former i SQL:
- 1NF (fรถrsta normala formen): Sรคkerstรคller att databastabellen รคr organiserad sรฅ att varje kolumn innehรฅller atomรคra (odelbara) vรคrden, och varje post รคr unik. Detta eliminerar รฅterkommande grupper och strukturerar dรคrigenom data i tabeller och kolumner.
- 2NF (andra normalformen): Bygger pรฅ 1NF av Vi mรฅste ta bort redundanta data frรฅn en tabell som appliceras pรฅ flera rader. och placera dem i separata tabeller. Det krรคver att alla icke-nyckelattribut รคr fullt fungerande pรฅ primรคrnyckeln.
- 3NF (tredje normalformen): Utรถkar 2NF genom att sรคkerstรคlla att alla icke-nyckelattribut inte bara รคr fullt funktionella pรฅ primรคrnyckeln utan ocksรฅ oberoende av varandra. Detta eliminerar transitivt beroende.
- BCNF (Boyce-Codd Normal Form): En fรถrfining av 3NF som รฅtgรคrdar anomalier som inte hanteras av 3NF. Det krรคver att varje bestรคmningsfaktor รคr en kandidatnyckel, vilket sรคkerstรคller en รคnnu strรคngare efterlevnad av normaliseringsreglerna.
- 4NF (fjรคrde normalformen): Adresserar beroenden med flera vรคrden. Det sรคkerstรคller att det inte finns flera oberoende fakta med flera vรคrden om en enhet i en post.
- 5NF (femte normalformen): รven kรคnd som "Projection-Join Normal Form" (PJNF), det avser rekonstruktion av information frรฅn mindre, annorlunda ordnade datastycken.
- 6NF (sjรคtte normalformen): Teoretisk och inte allmรคnt implementerad. Den hanterar tidsdata (hanterar fรถrรคndringar รถver tid) genom att ytterligare sรถnderdela tabeller fรถr att eliminera all icke-temporell redundans.
Teorin om datanormalisering i MySQL servern utvecklas fortfarande. Till exempel finns det diskussioner รคven den 6th Normal form. Men i de flesta praktiska tillรคmpningar nรฅr normalisering sitt bรคsta i 3rd Normal form. Utvecklingen av normalisering i SQL-teorier illustreras nedan-
.png)
Databasnormalisering med exempel
Databas Normaliseringsexempel kan lรคtt fรถrstรฅs med hjรคlp av en fallstudie. Anta att ett videobibliotek upprรคtthรฅller en databas รถver uthyrda filmer. Utan normalisering i databasen lagras all information i en tabell som visas nedan. Lรฅt oss fรถrstรฅ normaliseringsdatabas med normaliseringsexempel med lรถsning:
Hรคr ser du Hyrda filmer-kolumnen har flera vรคrden. Lรฅt oss nu gรฅ รถver till 1:a normala formulรคr:
Fรถrsta normala formen (1NF)
- Varje tabellcell ska innehรฅlla ett enda vรคrde.
- Varje skiva mรฅste vara unik.
Tabellen ovan i 1NF-
1NF Exempel

Innan vi fortsรคtter lรฅt oss fรถrstรฅ nรฅgra saker -
Vad รคr en KEY i SQL
A KEY i SQL รคr ett vรคrde som anvรคnds fรถr att identifiera poster i en tabell unikt. En SQL-NYCKEL รคr en enda kolumn eller kombination av flera kolumner som anvรคnds fรถr att unikt identifiera rader eller tupler i tabellen. SQL Key anvรคnds fรถr att identifiera dubblettinformation, och det hjรคlper ocksรฅ till att upprรคtta en relation mellan flera tabeller i databasen.
Obs: Kolumner i en tabell som INTE anvรคnds fรถr att identifiera en post unikt kallas icke-nyckelkolumner.
Vad รคr en primรคrnyckel?

En primรคr รคr ett enstaka kolumnvรคrde som anvรคnds fรถr att identifiera en databaspost unikt.
Den har fรถljande attribut
- A primรคr nyckel kan inte vara NULL
- Ett primรคrnyckelvรคrde mรฅste vara unikt
- De primรคra nyckelvรคrdena bรถr sรคllan รคndras
- Primรคrnyckeln mรฅste ges ett vรคrde nรคr en ny post infogas.
Vad รคr Composite Key?
En sammansatt nyckel รคr en primรคrnyckel som bestรฅr av flera kolumner som anvรคnds fรถr att identifiera en post unikt
I vรฅr databas har vi tvรฅ personer med samma namn Robert Phil, men de bor pรฅ olika platser.

Dรคrfรถr krรคver vi bรฅde fullstรคndigt namn och adress fรถr att identifiera en post unikt. Det รคr en sammansatt nyckel.
Lรฅt oss gรฅ in i den andra normala formen 2NF
Andra normala formen (2NF)
- Regel 1- Var i 1NF
- Regel 2 - Enkolumns primรคrnyckel som inte รคr funktionellt beroende av nรฅgon delmรคngd av kandidatnyckelrelationen
Det รคr tydligt att vi inte kan gรฅ vidare fรถr att gรถra vรฅr enkla databas i 2nd Normaliseringsform om vi inte delar upp tabellen ovan.
Vi har delat upp vรฅrt 1NF-bord i tvรฅ tabeller, dvs. Tabell 1 och Tabell 2. Tabell 1 innehรฅller medlemsinformation. Tabell 2 innehรฅller information om hyrda filmer.
Vi har introducerat en ny kolumn som heter Membership_id som รคr den primรคra nyckeln fรถr tabell 1. Poster kan identifieras unikt i Tabell 1 med hjรคlp av medlems-id
Databas โ frรคmmande nyckel
I tabell 2 รคr Membership_ID den frรคmmande nyckeln

Utlรคndsk nyckel refererar till primรคrnyckeln fรถr en annan tabell! Det hjรคlper till att koppla ihop dina tabeller
- En frรคmmande nyckel kan ha ett annat namn รคn dess primรคrnyckel
- Det sรคkerstรคller att rader i en tabell har motsvarande rader i en annan
- Till skillnad frรฅn den primรคra nyckeln behรถver de inte vara unika. Oftast รคr de inte det
- Frรคmmande nycklar kan vara null รคven om primรคrnycklar inte kan
Varfรถr behรถver du en frรคmmande nyckel?
Antag att en nybรถrjare infogar en post i tabell B som t.ex
Du kommer bara att kunna infoga vรคrden i din frรคmmande nyckel som finns i den unika nyckeln i den รถverordnade tabellen. Detta hjรคlper till med referensintegritet.
Ovanstรฅende problem kan รถvervinnas genom att deklarera medlems-id frรฅn Tabell2 som frรคmmande nyckel fรถr medlems-ID frรฅn Tabell1
Nu, om nรฅgon fรถrsรถker infoga ett vรคrde i medlems-id-fรคltet som inte finns i den รถverordnade tabellen, kommer ett fel att visas!
Vad รคr transitiva funktionella beroenden?
En transitiv funktionellt beroende รคr nรคr du รคndrar en icke-nyckelkolumn, kan orsaka att nรฅgon av de andra icke-nyckelkolumnerna รคndras
Tรคnk pรฅ tabellen 1. Om du รคndrar kolumnen utan nyckel Fullstรคndigt namn kan hรคlsningen รคndras.
Lรฅt oss gรฅ in i 3NF
Tredje normala formen (3NF)
- Regel 1- Var i 2NF
- Regel 2- Har inga transitiva funktionella beroenden
Fรถr att flytta vรฅrt 2NF-bord till 3NF mรฅste vi รฅterigen dela upp vรฅrt bord.
3NF Exempel
Nedan รคr ett 3NF-exempel i SQL-databas:
Vi har รฅterigen delat upp vรฅra bord och skapat ett nytt bord som lagrar hรคlsningar.
Det finns inga transitiva funktionella beroenden, och dรคrfรถr รคr vรฅr tabell i 3NF
I tabell 3 รคr hรคlsnings-ID primรคrnyckel, och i tabell 1 รคr hรคlsnings-ID frรคmmande fรถr primรคrnyckeln i tabell 3
Nu รคr vรฅrt lilla exempel pรฅ en nivรฅ som inte kan dekomponeras ytterligare fรถr att uppnรฅ hรถgre normala former av normalisering i DBMS. I sjรคlva verket รคr det redan i hรถgre normaliseringsformer. Separata anstrรคngningar fรถr att gรฅ till nรคsta nivรฅ av normalisering av data behรถvs normalt i komplexa databaser. Men vi kommer att diskutera nรคsta nivรฅer av normalisering i DBMS i korthet i det fรถljande.
Boyce-Codd normal form (BCNF)
รven nรคr en databas finns i 3rd Normal form, fortfarande skulle det uppstรฅ anomalier om den har mer รคn en Kandidat Nyckel.
Ibland kallas BCNF ocksรฅ 3.5 Normalform.
Fjรคrde normalform (4NF)
Om ingen databastabellinstans innehรฅller tvรฅ eller flera, oberoende och flervรคrdesdata som beskriver den relevanta enheten, รคr den i 4th Normal form.
Femte normalform (5NF)
En tabell รคr i 5th Normal form endast om den รคr i 4NF och den inte kan dekomponeras i ett antal mindre tabeller utan datafรถrlust.
Sjรคtte normalformen (6NF) Fรถreslagen
6th Normal Form รคr inte standardiserad, men den har dock diskuterats av databasexperter under en tid. Fรถrhoppningsvis skulle vi ha en tydlig och standardiserad definition fรถr 6th Normal form inom en snar framtid...
Vilka รคr fรถrdelarna med normalisering?
- Fรถrbรคttra datakonsistens: Normalisering sรคkerstรคller att varje databit bara lagras pรฅ ett stรคlle, vilket minskar risken fรถr inkonsekventa data. Nรคr data uppdateras behรถver den bara uppdateras pรฅ ett stรคlle, vilket sรคkerstรคller konsekvens.
- Minska dataredundans: Normalisering hjรคlper till att eliminera dubbletter av data genom att dela upp dem i flera relaterade tabeller. Detta kan spara lagringsutrymme och รคven gรถra databasen mer effektiv.
- Fรถrbรคttra frรฅgeprestanda: Normaliserade databaser รคr ofta lรคttare att sรถka efter. Eftersom data รคr logiskt organiserade kan frรฅgor optimeras fรถr att kรถras snabbare.
- Gรถr data mer meningsfulla: Normalisering innebรคr groupping data pรฅ ett sรคtt som รคr begripligt och intuitivt. Detta kan gรถra databasen lรคttare att fรถrstรฅ och anvรคnda, sรคrskilt fรถr personer som inte designat databasen.
- Minska risken fรถr anomalier: Avvikelser รคr problem som kan uppstรฅ nรคr man lรคgger till, uppdaterar eller tar bort data. Normalisering kan minska risken fรถr dessa anomalier genom att sรคkerstรคlla att data รคr logiskt organiserade.
Vilka รคr nackdelarna med normalisering?
- รkad komplexitet: Normalisering kan leda till komplexa relationer. Ett stort antal tabeller med frรคmmande nycklar kan vara svรฅra att hantera, vilket leder till fรถrvirring.
- Minskad flexibilitet: Pรฅ grund av de strikta reglerna fรถr normalisering kan det finnas mindre flexibilitet nรคr det gรคller att lagra data som inte fรถljer dessa regler.
- รkade lagringskrav: Medan normalisering minskar redundans, kan det vara nรถdvรคndigt att tilldela mer lagringsutrymme fรถr att rymma de ytterligare tabellerna och indexen.
- Prestandaoverhead: Att slรฅ samman flera bord kan vara kostsamt nรคr det gรคller prestanda. Ju mer normaliserad data รคr, desto fler kopplingar behรถvs, vilket kan sakta ner tiderna fรถr datahรคmtning.
- Fรถrlust av datakontext: Normalisering bryter ner data i separata tabeller, vilket kan leda till att affรคrskontexten fรถrsvinner. Att undersรถka relaterade tabeller รคr nรถdvรคndigt fรถr att fรถrstรฅ sammanhanget fรถr en databit.
- Behov av expertkunskap: Att implementera en normaliserad databas krรคver en djup fรถrstรฅelse av data, relationerna mellan data och normaliseringsreglerna. Detta krรคver expertkunskap och kan vara tidskrรคvande.
Det รคr allt till SQL-normalisering!!!
Vanliga frรฅgor
Sammanfattning
- Databasdesign รคr avgรถrande fรถr en framgรฅngsrik implementering av ett databashanteringssystem som uppfyller datakraven i ett fรถretagssystem.
- Normalisering i DBMS รคr en process som hjรคlper till att producera databassystem som รคr kostnadseffektiva och har bรคttre sรคkerhetsmodeller.
- Funktionella beroenden รคr en mycket viktig komponent i normaliseringsdataprocessen
- De flesta databassystem รคr normaliserade databas upp till den tredje normala formen i DBMS.
- En primรคrnyckel identifierar unikt รคr registrerade i en tabell och kan inte vara null
- En frรคmmande nyckel hjรคlper till att ansluta tabeller och refererar till en primรคrnyckel










