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