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

Vad är databasnormalisering?

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.

Typer av normala former 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...

Fördelar med normal form

  • 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 att gruppera data på ett sätt som är vettigt och intuitivt. Detta kan göra databasen lättare att förstå och använda, särskilt för personer som inte designade 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.

Nackdelar 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!!!

Slutsats

  • 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

Läs mer Readmore