Een functionele afhankelijkheid in een database dwingt een reeks beperkingen tussen attributen af. Dit gebeurt wanneer een attribuut in een relatie op unieke wijze een ander attribuut bepaalt. Dit kan worden geschreven A -> B wat betekent “B is functioneel afhankelijk van A.” Dit wordt ook wel een database-afhankelijkheid genoemd. In deze relatie bepaalt A de waarde van B, terwijl B afhankelijk is van A.
Waarom functionele afhankelijkheid belangrijk is bij het ontwerpen van databases
Functionele afhankelijkheid helpt de validiteit van gegevens te waarborgen. Overweeg een tabel Werknemers met kenmerken als Burgerservicenummer (BSN), naam, geboortedatum, adres enzovoort. Het attribuut BSN bepaalt de waarde van naam, geboortedatum, adres en wellicht andere waarden, omdat een BSN uniek is, terwijl een naam, geboortedatum of adres dat niet hoeft te zijn. We kunnen het zo schrijven: BSN -> naam, geboortedatum, adres
type=”code”> Naam, geboortedatum en adres zijn dus functioneel afhankelijk van BSN. De omgekeerde verklaring (naam -> BSN) is echter niet waar omdat meer dan één werknemer dezelfde naam kan hebben, maar nooit hetzelfde BSN zal hebben. Anders gezegd, meer concreet, als we de waarde van het SSN-attribuut kennen, kunnen we de waarde van naam, geboortedatum en adres vinden. Maar als we in plaats daarvan alleen de waarde van het attribuut name kennen, kunnen we het SSN niet identificeren. De linkerkant van een functionele afhankelijkheid kan meer dan één attribuut bevatten. Laten we zeggen dat we een bedrijf hebben met meerdere vestigingen. We hebben misschien een tabel Medewerker met attributen werknemer, titel, afdeling, locatie en manager. De medewerker bepaalt de locatie waar hij werkt, dus er is een afhankelijkheid: medewerker -> locatie
type=”code”> Maar de locatie kan meer dan één manager hebben, dus medewerker en afdeling bepalen samen de manager: medewerker, afdeling -> manager
type=”code”>
Functionele afhankelijkheid en normalisatie
Functionele afhankelijkheid draagt bij aan wat databasenormalisatie wordt genoemd, wat de gegevensintegriteit waarborgt en gegevensredundanties vermindert. Zonder normalisatie is er geen garantie dat de gegevens in een database nauwkeurig en betrouwbaar zijn.