Functionele afhankelijkheid

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een functionele afhankelijkheid is een relatie tussen twee attribuutverzamelingen in een tabel van een relationeel model. Deze redenering speelt een grote rol bij het bepalen van kandidaatsleutels bij databanknormalisatie.

Wanneer in twee tupels waarin attribuut X dezelfde waarde bevatten, dan moeten de waarden in attribuut Y van dat tupel ook hetzelfde zijn. Dit noteren we als X \rightarrow Y.

Als we X\rightarrow Y formeel uitschrijven komen we uit op de volgende expressie: (\forall_{t_{1},t_{2}}:t_{1}[X]=t_{2}[X]:t_{1}[Y]=t_{2}[Y])

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 X\rightarrow Y, 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 beiden a is.

Voorbeeld van X\rightarrow Y is plaatsnaam\rightarrow netnummer. Andersom hoeft dus niet te gelden: bij één netnummer horen vaak meerdere plaatsnamen. Attribuut X wordt de determinant genoemd.

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 \alpha een attribuutset is en \beta\subseteq\alpha geldt, dan geldt \alpha\rightarrow\beta.
  • Augmentatieregel: Wanneer \alpha \rightarrow \beta geldt en \gamma is een verzameling attributen, dan geldt \alpha\gamma\rightarrow\beta\gamma.
  • Transiviteitsregel: Wanneer \alpha\rightarrow\beta en \beta\rightarrow\gamma gelden, dan geldt ook \alpha\rightarrow\gamma.

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

  • Verenigingsregel: Wanneer \alpha\rightarrow\beta en \alpha\rightarrow\gamma geleden, dan geldt ook \alpha\rightarrow\beta\gamma.
  • Decompositieregel: Wanneer \alpha\rightarrow\beta\gamma geldt, dan gelden ook \alpha\rightarrow\beta en \alpha\rightarrow\gamma.
  • Pseudotransiviteitsregel: Wanneer \alpha\rightarrow\beta en \gamma\beta\rightarrow\delta gelden, dan geldt ook \alpha\gamma\rightarrow\delta.