Dipendenza funzionale

Da Wikipedia, l'enciclopedia libera.

Definizione[modifica | modifica wikitesto]

Una dipendenza funzionale è un particolare vincolo di integrità per il modello relazionale che descrive legami di tipo funzionale tra gli attributi di una relazione.

Data una relazione r su uno schema relazionale R(X) e due sottoinsiemi di attributi non vuoti Y e Z di X, si dice che esiste su r una dipendenza funzionale tra Y e Z se per ogni coppia di tuple t_1 e t_2 di r aventi gli stessi valori sugli attributi Y, t_1 e t_2 hanno gli stessi valori anche sugli attributi Z:

\forall t_1,t_2 \in r , t_1[Y]=t_2[Y]  \rightarrow t_1[Z]=t_2[Z]

Una dipendenza funzionale tra gli attributi Y e Z viene generalmente indicata con la notazione Y \to Z e come gli altri vincoli di integrità viene associata ad uno schema: una relazione su quello schema verrà considerata corretta se soddisfa tale dipendenza funzionale.

Verrà denotato con \langle R(X),F \rangle uno schema R(X) in cui è definito un insieme F delle dipendenze funzionali. Un’istanza r di R(X) è detta istanza legale di \langle R(X),F \rangle quando essa soddisfa tutte le dipendenze funzionali di F.

Un'implicazione logica si ha quando, partendo da uno schema \langle R(X),F \rangle e una dipendenza funzionale Y \rightarrow Z, ogni istanza legale r di  \langle R(X),F \rangle soddisfa anche Y \rightarrow Z, si dirà così che F implica logicamente Y \rightarrow Z, indicata come F \vDash Y \rightarrow Z.

Esempio[modifica | modifica wikitesto]

Prendiamo come esempio uno studente universitario identificato con un ID, che sostiene degli esami e per ognuno di essi ottiene un voto, la dipendenza funzionale risulta essere:

{\{}ID,ESAME{}\} \rightarrow VOTO

Chiusura di un insieme di dipendenza funzionale[modifica | modifica wikitesto]

La chiusura è essenzialmente l'intero set di valori che possono essere determinate da un insieme di valori noti per un determinato rapporto con le sue dipendenze funzionali. Formalmente:

Dato un insieme F di dipendenze funzionali, di uno schema \langle R(X),F \rangle, la sua chiusura F+ è l’insieme delle dipendenze funzionali che sono implicate logicamente da F:

F^+ = {\{} Y \rightarrow Z | F \vDash Y \rightarrow Z{}\}

Esempio[modifica | modifica wikitesto]

Prendiamo le seguenti dipendenze funzionali dello schema R(A,B,C,D):

  1. A \rightarrow B
  2. B \rightarrow C
  3. AB \rightarrow D

La chiusura, applicando gli Assiomi di Armstrong, sarebbe la seguente:

a) A \rightarrow A
(Riflessività)

b) A \rightarrow AB
(1. unita alla (a))

c) A \rightarrow D
(Transitività tra (b) e 3.)

d) A \rightarrow ABD
((b) unita alla (c))

e) A \rightarrow C
(Transitività tra 1 e 2)

f) A \rightarrow ABCD
((d) unita alla (e))

La chiusura è quindi A \rightarrow ABCD
. Calcolando la chiusura di A abbiamo dimostrato che A è anche chiave.

Chiave e superchiave[modifica | modifica wikitesto]

Se prendiamo una chiave K di una relazione r si può facilmente verificare che esiste una dipendenza funzionale tra K e un qualunque altro attributo o inseme di attributi dello schema di r, cioè in uno schema \langle R(X),F \rangle e K \subseteq X
, allora K è detta chiave dello schema se:

K \rightarrow X
è in F+ e \not\exist Y \subseteq K 
tale che Y \rightarrow X
è in F+

Per definizione stessa di vincolo di chiave, non possono esistere due tuple con gli stessi valori su K e quindi una dipendenza funzionale che ha  al primo membro sarà sempre soddisfatta. Si fa presente che non è detto però che, dato un attributo di una relazione, questo dipenda completamente da tutta la chiave primaria della relazione stessa: è possibile che un attributo (non appartenente all'insieme degli attributi chiave primaria) dipenda in modo completo anche solo da un sottoinsieme della chiave primaria.

Chiameremo superchiave ogni soprainsieme di una chiave.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

  • Beneventano D. Bergamaschi S. Guerra F. Vincini M., Progetto di basi di dati relazionali, Pitagora Editrice, Bologna,2007/2, ISBN 88-371-1680-2.