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

Dipendenza funzionale dalla semantica degli attributi

Una dipendenza funzionale è una proprietà dello schema di relazione (intenzione) R e non di un particolare stato di relazione (estensione legale r di R)

Le estensioni legali o stati di relazione legali sono delle estensioni di relazione r(R) che soddisfano i vincoli di FD

Una FD non può essere inferita in modo automatico da un’istanza di relazione r, ma deve essere definita esplicitamente da chi conosce il significato degli attributi

Regole di inferenza per FD

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