Dipendenza funzionale

Una dipendenza funzionale (FD) è un vincolo tra due insiemi di attributi del database

Supponiamo che lo schema di db relazionale abbia n attributi $A_1, A_2,..,A_n$ e che l’intero database sia descritto da uno schema di relazione universale $R= \{ A_1,A_2,..,A_n\}$

Una dipendenza funzionale, denotata con $X \to Y$, tra due insiemi di attributi X e Y che sono sottoinsiemi di R, specifica un vincolo sulle possibili tuple che possono formare una istanza di relazione r di R

<aside> <img src="/icons/exclamation-mark_purple.svg" alt="/icons/exclamation-mark_purple.svg" width="40px" /> Il vincolo stabilisce che se $X \to Y$, allora $\forall t_1,t_2$ in r tali che $t_1[X] = t_2[X]$, deve valere $t_1[Y] = t_2[Y]$

</aside>

Ciò significa che i valori della componente Y di una tupla di r dipendono da (o sono determinati da) i valori della componente X

Alternativamente, i valori della componente X di una tupla determinano univocamente (o funzionalmente) i valori della componente Y

Cioè esiste una dipendenza funzionale da X a Y:

Si noti che: se un vincolo su R stabilisce che non può esistere più di una tupla con un dato valore per X in ogni istanza di relazione r(R) - cioè X è una chiave candidata di R - ciò implica che $X \to Y$ per ogni sottoinsieme Y di attributi di R

Il fatto che $X \to Y$ in R non implica nulla circa $Y \to X$ in R

La dipendenza funzionale è una proprietà della semantica degli attributi


Regole di inferenza per FD

Sia F l’insieme delle dipendenze funzionali di uno schema di relazione R

Il disegnatore dello schema specifica le dipendenze funzionali semanticamente ovvie

In tutte le istanze di relazione legali, però, valgono numerose altre dipendenze funzionali: queste possono essere inferite (o dedotte) da F

L’insieme di tali dipendenze è detto chiusura di F, ed è denotato da $F^+$