Funktionellt beroende i DBMS: Typer med exempel
⚡ Smart sammanfattning
Funktionellt beroende är en begränsning som avgör hur ett attribut relaterar till ett annat i ett databashanteringssystem. Den ligger till grund för normalisering genom att identifiera determinanter och beroenden, och den klassificeras i flervärdiga, triviala, icke-triviala och transitiva beroenden.

Vad är funktionellt beroende?
Funktionellt beroende (FD) är en begränsning som bestämmer relationen mellan ett attribut och ett annat attribut i ett databashanteringssystem (DBMS). Funktionellt beroende hjälper till att upprätthålla datakvaliteten i databasen. Det spelar en viktig roll för att skilja mellan bra och dålig databasdesign.
Ett funktionellt beroende betecknas med en pil ”→”. Det funktionella beroendet av Y på X representeras av X → Y. Låt oss förstå funktionellt beroende med ett exempel.
Exempel:
| Anställningsnummer | Anställd Namn | Lön | Ort |
|---|---|---|---|
| 1 | Dana | 50000 | San Francisco |
| 2 | Francis | 38000 | london |
| 3 | Andrew | 25000 | Tokyo |
I det här exemplet, om vi känner till värdet på anställningsnummer, kan vi få fram anställningsnamn, ort, lön och så vidare. Med detta kan vi säga att ort, anställningsnamn och lön är funktionellt beroende av anställningsnummer.
Nyckelbegrepp
Här är några nyckeltermer för funktionellt beroende i en databas:
| Nyckelbegrepp | BESKRIVNING |
|---|---|
| Axiom | Axiom är en uppsättning inferensregler som används för att härleda alla funktionella beroenden i en relationsdatabas. |
| Sönderfall | En regel som föreslår att om du har en tabell som verkar innehålla två entiteter som bestäms av samma primärnyckel, bör du överväga att dela upp den i två olika tabeller. |
| Beroende | Den visas på höger sida av diagrammet över funktionella beroenden. |
| determinanten | Den visas på vänster sida av diagrammet över funktionella beroenden. |
| Union | Det föreslår att om två tabeller är separata och primärnyckeln är densamma, bör du överväga att sätta ihop dem. |
Regler för funktionella beroenden (Armstrongs axiom)
Nedan följer de tre viktigaste reglerna för funktionellt beroende i en databas. De är kända som Armstrongs axiom, och alla andra inferensregler kan härledas från dem.
- Reflexiv regel: Om X är en mängd attribut och Y är en delmängd av X, så gäller X → Y.
- Augmenteringsregel: När X → Y gäller och C är en attributmängd, gäller även XC → YC. Att lägga till attribut ändrar inte det grundläggande beroendet.
- Transitivitetsregel: Liknar den transitiva regeln i algebra: om X → Y gäller och Y → Z gäller, så gäller även X → Z.
Tre ytterligare regler härleds från dessa och används ständigt i praktiken:
- Unionsregel: Om X → Y och X → Z, då är X → YZ.
- Nedbrytningsregel: Om X → YZ, då är X → Y och X → Z.
- Pseudotransitivitetsregel: Om X → Y och WY → Z, då är WX → Z.
Att tillämpa dessa regler upprepade gånger på en uppsättning beroenden producerar dess förslutning, den kompletta uppsättningen beroenden som logiskt följer. Slutet av en attributuppsättning är också hur kandidatnycklar hittas, vilket kopplar direkt till studiet av DBMS-nycklar.
Typer av funktionella beroenden i DBMS
Det finns huvudsakligen fyra typer av funktionella beroenden i DBMS:
- Flervärdigt beroende
- Trivialt funktionellt beroende
- Icke-trivialt funktionellt beroende
- Transitivt beroende
Flervärdigt beroende i DBMS
Flervärdiga beroenden uppstår i en situation där det finns flera oberoende flervärdiga attribut i en enda tabell. Ett flervärdigt beroende är en fullständig begränsning mellan två uppsättningar attribut i en relation, vilket kräver att vissa tupler finns. Betrakta följande exempel.
Exempel:
| Bilmodell | Maf_år | Färg |
|---|---|---|
| H001 | 2017 | Metallisk |
| H001 | 2017 | Grön |
| H005 | 2018 | Metallisk |
| H005 | 2018 | Blå |
| H010 | 2015 | Metallisk |
| H033 | 2012 | Grå |
I det här exemplet är Maf_year och Color oberoende av varandra men beroende av Car_model. Dessa två kolumner sägs ha flervärdesberoende på Car_model. Detta representeras som:
bilmodell → maj_år
bilmodell → färg
Trivialt funktionellt beroende i DBMS
Ett trivialt beroende är en mängd attribut som kallas trivialt om mängden attribut ingår i det attributet. Så, X → Y är ett trivialt funktionellt beroende om Y är en delmängd av X. Betrakta exemplet nedan.
| Emp_id | Emp_name |
|---|---|
| AS555 | Harry |
| AS811 | George |
| AS999 | Kevin |
Betrakta den här tabellen med två kolumner, Emp_id och Emp_name. {Emp_id, Emp_name} → Emp_id är ett trivialt funktionellt beroende, eftersom Emp_id är en delmängd av {Emp_id, Emp_name}.
Icke-trivialt funktionellt beroende i DBMS
Ett icke-trivialt beroende uppstår när A → B gäller och B inte är en delmängd av A. Om attributet B inte är en delmängd av attributet A anses beroendet vara icke-trivialt.
| Företag | CEO | Ålder |
|---|---|---|
| Microsoft | Satya Nadella | 51 |
| Sundar Pichai | 46 | |
| Apple | Tim Cook | 57 |
Exempel:
{Företag} → {VD} (om vi känner till företaget, vet vi även namnet på VD:n). Men VD är inte en delmängd av företaget, och därför är det ett icke-trivialt funktionellt beroende.
Transitivt beroende i DBMS
Ett transitivt beroende är en typ av funktionellt beroende som uppstår när ett attribut indirekt bestäms av två funktionella beroenden. Betrakta exemplet nedan.
| Företag | CEO | Ålder |
|---|---|---|
| Microsoft | Satya Nadella | 51 |
| Sundar Pichai | 46 | |
| alibaba | Jack Ma | 54 |
{Företag} → {VD} (om vi känner företaget, vet vi dess VD:s namn).
{VD} → {Ålder} (om vi känner VD:n, vet vi åldern).
Därför, enligt regeln om transitivt beroende, bör {Företag} → {Ålder} gälla, vilket är logiskt eftersom om vi vet företagsnamnet kan vi hitta åldern.
Obs: transitivt beroende kan endast förekomma i en relation av tre eller fler attribut.
Vad är normalisering?
Normalisering är en metod för att organisera data i en databas som hjälper dig att undvika dataredundans och avvikelser vid infogning, uppdatering och borttagning. Det är en process för att analysera relationsscheman baserat på deras olika funktionella beroenden och primärnyckel.
Normalisering är en inneboende del av relationsdatabasteorin. Det kan ha effekten att dela upp data i ytterligare tabeller så att varje fakta lagras en gång. Hela processen beskrivs i guiden till databasnormalisering, vilket bygger direkt på beroendetyperna ovan.
Fördelar med funktionellt beroende
- Funktionellt beroende undviker dataredundans, så att samma data inte upprepas på flera platser i databas.
- Det hjälper dig att upprätthålla kvaliteten på data i databasen.
- Det hjälper dig att definiera databasers betydelser och begränsningar.
- Det hjälper dig att identifiera dåliga designer.
- Det hjälper dig att hitta fakta om databasdesignen.
