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

DBMS-normalisering

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-

Databas normala formulรคr
Databas normala formulรคr

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:

Databasnormalisering med exempel

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

1NF regler
Exempel pรฅ 1NF i DBMS

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?

Primรคrnyckel
Primรคr nyckel i DBMS

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.

Sammansatt nyckel i databasen
Sammansatt nyckel i databasen

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.

2NF regler

2NF regler

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

Databas โ€“ frรคmmande nyckel

Databas โ€“ frรคmmande nyckel
Utlรคndsk nyckel i DBMS

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

Databas โ€“ frรคmmande nyckel

Varfรถr behรถver du en frรคmmande nyckel?

Antag att en nybรถrjare infogar en post i tabell B som t.ex

Varfรถr behรถver du en frรคmmande nyckel

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.

Transitiva funktionella beroenden

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:

3NF Exempel

3NF Exempel

3NF Exempel

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

Normalisering i DBMS รคr en process fรถr att organisera data i en databas fรถr att minska redundans och fรถrbรคttra dataintegriteten. Det innebรคr att stora tabeller delas upp i mindre, relaterade tabeller och att relationer mellan dem definieras. Detta sรคkerstรคller att data lagras logiskt och konsekvent, vilket gรถr uppdateringar, infogningar och borttagningar mer effektiva samtidigt som avvikelser fรถrhindras.

Datanormalisering strukturerar databastabeller fรถr att undvika upprepning. Till exempel, istรคllet fรถr att lagra en kunds adress i varje orderpost, placerar normalisering kunduppgifter i en separat "Kund"-tabell lรคnkad med en nyckel. Detta minskar redundans โ€“ sรฅ om en adress รคndras uppdateras den bara en gรฅng. Resultatet รคr en renare, effektivare databas med korrekta och konsekventa data.

Syftet med normalisering รคr att eliminera redundanta data, minimera avvikelser och sรคkerstรคlla databasens effektivitet. Det fรถrenklar underhรฅll genom attping organiserar relaterad information, minskar lagringsslรถseri och framtvingar datakonsistens. Normalisering fรถrbรคttrar ocksรฅ frรฅgeprestanda genom att strukturera data logiskt, vilket gรถr det mรถjligt fรถr utvecklare och anvรคndare att fรฅ tillgรฅng till korrekt information utan att behรถva hantera dubbelarbete eller motstridiga poster.

Tredje normalformen (3NF) รคr ett normaliseringssteg som sรคkerstรคller att varje icke-nyckelattribut endast รคr beroende av primรคrnyckeln och inte av andra icke-nyckelattribut. Till exempel, i en medarbetartabell bรถr "Avdelningsnamn" separeras i en avdelningstabell istรคllet fรถr att fรถrlita sig pรฅ "Avdelnings-ID". Detta undviker transitiva beroenden, vilket sรคkerstรคller noggrannhet, konsekvens och effektivitet i datahanteringen.

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

Sammanfatta detta inlรคgg med: