En funksjonell avhengighet i en database håndhever et sett av begrensninger mellom attributter. Dette skjer når en attributt i en relasjon unikt bestemmer et annet attributt. Dette kan skrives A -> B som betyr "B er funksjonelt avhengig av A." Dette kalles også en databaseavhengighet.
I dette forholdet bestemmer A verdien av B, mens B avhenger A.
Hvorfor funksjonell avhengighet er viktig i databasedesign
Funksjonell avhengighet bidrar til å sikre datas gyldighet. Se på en tabell Ansatte som viser egenskaper, inkludert SSN, navn, fødselsdato, adresse og så videre.
Attributtet SSN bestemmer verdien av navn, fødselsdato, adresse og kanskje andre verdier, fordi et personnummer er unikt, mens et navn, fødselsdato eller adresse kanskje ikke er. Vi kan skrive det slik:
SSN -> navn, fødselsdato, adresse
Derfor er navn, fødselsdato og adresse funksjonelt avhengig av SSN. Den omvendte setningen (navn -> SSN) er imidlertid ikke sant fordi flere enn én ansatt kan ha samme navn, men vil aldri ha samme SSN. Sett en annen, mer konkret måte, hvis vi vet verdien av SSN-attributtet, kan vi finne verdien av navn, fødselsdato og adresse. Men hvis vi i stedet kjenner verdien av bare navnetattributtet, kan vi ikke identifisere SSN.
Den venstre side av en funksjonell avhengighet kan inneholde mer enn ett attributt. La oss si at vi har en virksomhet med flere steder. Vi kan ha en tabell medarbeider med attributter ansatt, tittel, avdeling, sted og leder.
Medarbeider bestemmer hvor han jobber, så det er en avhengighet:
ansatt -> plassering
Men plasseringen kan ha flere enn en leder, så ansatte og avdelingen bestemmer lederen sammen:
ansatt, avdeling -> leder
Funksjonell avhengighet og normalisering
Funksjonell avhengighet bidrar til det som kalles databasen normalisering, som sikrer data integritet og reduserer data redundans. Uten normalisering er det ingen garanti for at dataene i en database er nøyaktige og pålitelige.