Functionele afhankelijkheid

Een functionele afhankelijkheid is een bepaald soort constraint (voorwaarde) op de mogelijke waarden in een relatie (tabel) van een relationele database. Een verzameling attributen (kolommen) van de relatie wordt functioneel afhankelijk genoemd van een tweede verzameling attributen als altijd wanneer twee tupels (rijen) van de relatie gelijke waarden hebben voor de tweede verzameling attributen, ze ook gelijke waarden hebben voor de eerste verzameling attributen:

De beide verzamelingen attributen worden de gedetermineerde respectievelijk de determinant van de functionele afhankelijkheid genoemd.

Een verzameling attributen waarvan alle attributen functioneel afhankelijk zijn wordt een kandidaatsleutel van de relatie genoemd.

Functionele afhankelijkheden spelen een grote rol bij databanknormalisatie.

Voorbeelden bewerken

Om het wat visueler te maken staan hier twee eenvoudige tabellen met de attributen X en Y. In de eerste tabel geldt de functionele afhankelijkheid  , in de tweede tabel niet.

X Y Z
a b c
a b d
b a d
c b c


X Y Z
a b c
a c d
a b d
b a c

In de eerste en tweede rij ziet u dat de functionele afhankelijkheid wordt verbroken, doordat de waarde in de kolom Y zowel b en c hebben, terwijl de waarde in kolom X bij beide a is.

Functionele afhankelijkheden komen in databases zeer veel voor. Zo zou bijvoorbeeld voor een telefoongids kunnen gelden:   ("een plaatsnaam heeft maar een netnummer"). Dat betekent niet dat het omgekeerde ook moet gelden: bij één netnummer horen vaak meerdere plaatsnamen.

Axioma's bewerken

De volgende axioma's zijn van toepassing op functionele afhankelijkheden. De eerste drie worden ook wel axioma's van Armstrong genoemd:

  • Reflexiviteitsregel: Wanneer   een attribuutset is en   geldt, dan geldt  .
  • Augmentatieregel: Wanneer   geldt en   is een verzameling attributen, dan geldt  .
  • Transiviteitsregel: Wanneer   en   gelden, dan geldt ook  .

De volgende drie axioma's kunnen logisch afgeleid worden uit de axioma's van Armstrong:

  • Verenigingsregel: Wanneer   en   geleden, dan geldt ook  .
  • Decompositieregel: Wanneer   geldt, dan gelden ook   en  .
  • Pseudotransiviteitsregel: Wanneer   en   gelden, dan geldt ook  .