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.
