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.

  • โžก๏ธ Kรคrnidรฉ: I X โ†’ Y fixerar determinanten X vรคrdet pรฅ det beroende Y, skrivet med en pil.
  • ๐Ÿท๏ธ Nyckelbegrepp: Determinant, beroende, axiom, dekomposition och union beskriver hur beroenden namnges och manipuleras.
  • ๐Ÿ“ Armstrongs axiom: Reflexivitet, augmentation och transitivitet hรคrleder varje beroende som en mรคngd logiskt innebรคr.
  • ๐Ÿ”€ Fyra typer: Flervรคrderade, triviala, icke-triviala och transitiva beroenden beskriver vart och ett ett distinkt attributfรถrhรฅllande.
  • ๐Ÿงน Normaliseringslรคnk: Beroenden driver normalisering, vilket tar bort redundans och uppdateringsavvikelser.
  • ๐Ÿ”‘ Stรคngning: Attributstรคngningen avslรถjar kandidatnycklar och om ett beroende gรคller.
  • โœ… Dra nytta: Bra beroenden signalerar bra design och skiljer kvalitetsscheman frรฅn dรฅliga.

Funktionellt beroende i DBMS

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
Google 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
Google 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.

Vanliga frรฅgor

Determinanten รคr attributet till vรคnster om pilen som fixerar vรคrdet. Den beroende รคr attributet till hรถger vars vรคrde bestรคms. I X โ†’ Y bestรคmmer X Y.

Ett funktionellt beroende fixerar ett enda vรคrde fรถr det beroende. Ett flervรคrdigt beroende tillรฅter en uppsรคttning oberoende vรคrden, vilket รคr anledningen till att det behรถver ett eget attribut och leder till fjรคrde normalformen.

Berรคkna slutningen av en attributmรคngd med hjรคlp av beroendena. Om slutningen inkluderar alla attribut i relationen รคr den mรคngden en supernyckel; den minimala mรคngden รคr en kandidatnyckel.

Ja. Beroendeidentifieringsalgoritmer, vissa med hjรคlp av AI, skannar en datauppsรคttning och fรถreslรฅr potentiella beroenden. En designer mรฅste bekrรคfta dem, eftersom ett mรถnster som รคr sant i exempeldata kanske inte gรคller som regel.

Den lagrar ett faktum om ett icke-nyckelattribut, sรฅ att uppdatera det riskerar avvikelser. Att ta bort transitiva beroenden รคr precis vad den tredje normalformen krรคver, vilket hรฅller varje faktum pรฅ ett stรคlle.

Sammanfatta detta inlรคgg med: