Funktionellt beroende och normalisering i databaser
Funktionellt beroende är ett grundläggande koncept i databasdesign som beskriver förhållandet mellan attribut i en tabell. Den säger att ett eller flera attribut (determinant) unikt bestämmer värdet på ett annat attribut (beroende).
Exempel:
* Tänk på en tabell med attribut `StudentId ',' namn 'och' kurs '.
* Om "StudentId" unikt identifierar varje student, bestämmer "studentId" funktionellt "namn" och "kurs".
* Vi kan skriva detta som "StudentId -> namn, kurs".
normalisering är en process för att organisera data i en databas för att minska dataredundansen och förbättra dataintegriteten. Det handlar om att bryta ner ett stort bord i mindre, mer hanterbara tabeller baserade på funktionella beroenden.
Normala former (NFS):
Det finns olika normala former (NF), var och en med ökande normaliseringsnivåer:
* 1nf: Varje kolumn i en tabell har atomvärden (odelbara enheter). Inga upprepande grupper av kolumner.
* 2nf: I 1NF, och inget icke-nyckelattribut är beroende av endast en del av den primära nyckeln.
* 3nf: I 2NF, och inget icke-nyckelattribut är beroende av ett annat icke-nyckelattribut.
* bcnf (Boyce-codd normal form): I 3NF, och varje determinant är en kandidatnyckel.
* 4nf: I BCNF, och inget flervärderat beroende finns.
* 5nf: I 4NF, och inget anslutningsberoende finns.
Fördelar med normalisering:
* minskar dataredundans: Genom att bryta ner tabeller lagras data endast en gång, vilket minimerar redundans och sparar lagringsutrymme.
* Förbättrar dataintegritet: Normalisering förhindrar inkonsekventa datauppdateringar och säkerställer datanoggrannhet.
* Förbättrar effektiviteten för datafrågan: Mindre, välstrukturerade tabeller leder till snabbare datainhämtning och manipulation.
* underlättar dataunderhåll: Förändringar i data kan göras enkelt och konsekvent över databasen.
Exempel på normalisering:
Låt oss överväga en tabell "Studenter" med attribut:`StudentId`, 'Namn', 'kurs', 'instruktör',` avdelning '.
* onormaliserat tabell:
| StudentId | Namn | Kurs | Instruktör | Avdelning |
| --- | --- | --- | --- | --- |
| 1 | John Doe | Matematik | Professor Smith | Matematik |
| 2 | Jane Doe | Fysik | Professor Jones | Fysik |
| 1 | John Doe | Fysik | Professor Jones | Fysik |
* 1nf: Eftersom varje kolumn har atomvärden är tabellen redan i 1NF.
* 2nf: "Kurs" är beroende av "StudentId", som är en del av den primära nyckeln. Men "instruktör" och "avdelning" är beroende av "kurs", som inte är en del av den primära nyckeln. Därför måste vi sönderdelas tabellen i två:
Studenter:
| StudentId | Namn | Kurs |
| --- | --- | --- |
| 1 | John Doe | Matematik |
| 2 | Jane Doe | Fysik |
| 1 | John Doe | Fysik |
kurser:
| Kurs | Instruktör | Avdelning |
| --- | --- | --- |
| Matematik | Professor Smith | Matematik |
| Fysik | Professor Jones | Fysik |
* 3nf: Ovanstående tabeller finns redan i 3NF eftersom inget icke-nyckelattribut är beroende av ett annat icke-nyckelattribut.
Slutsats:
Funktionellt beroende och normalisering är väsentliga koncept i databasdesign, vilket hjälper till att skapa ett strukturerat och effektivt databassystem. Normalisering säkerställer dataintegritet, minskar redundans och förbättrar prestandan. Att förstå dessa koncept gör att du kan skapa pålitliga och underhållbara databaser.