Related
Introduzione
Una copertura minimale è un insieme di dipendenze funzionali che è equivalente all’insieme originale di dipendenze funzionali, ma con il minimo numero di dipendenze funzionali necessarie per descrivere le relazioni tra gli attributi.
oss: Un insieme di dipendenze funzionali , può avere più coperture minimali equivalenti. È proprio questo il motivo per cui l’algoritmo di decomposizione può produrre risultati diversi, ma tutti corretti.
Definizione
Sia un insieme di dipendenze funzionali. Una copertura minimale di è un insieme di dipendenze funzionali equivalente ad che rispetta queste 3 condizioni:
Condizione 1
Per ogni dipendenza funzionale in la parte destra è un singleton.
Importante: ogni attributo nella parte destra è non ridondante
Condizione 2
Per nessuna dipendenza funzionale in esiste tale che
Ovvero non accedere che:
se a tolgo e aggiungo
dopo queste operazioni è restato invariato allora
Importante: ogni attributo nella parte sinistra è non ridondante
Condizione 3
Per nessuna dipendenza funzionale in si ha che:
Ovvero: se a tolgo la dipendenza e il “significato” di resta invariato allora non va bene.
Importante: ogni dipendenza è non ridondante
Calcolo
Per ogni insieme di dipendenze funzionali esiste una copertura minimale equivalente ad che può essere ottenuta in tempo polinomiale in tre passi:
Passo 1
Usando la regola della decomposizione, le parti destre delle dipendenze funzionali vengono ridotte a singleton.
Ovvero: uguale ad e
Passo 2
Ogni dipendenza funzionale in tale che:
Deve essere sostituita da , se quest’ultima appartiene già ad la dipendenza originaria viene semplicemente eliminata, altrimenti il processo viene ripetuto ricorsivamente su
Il passo termina quando nessuna dipendenza funzionale può più essere ridotta.
Passo 3
Ogni dipendenza funzionale in tale che:
viene eliminata, in quanto risulta ridondante.
Verificare l’equivalenza
Il passo 2 ed il passo 3 richiedono la verifica dell’equivalenza tra due insiemi di dipendenze funzionali (Lemma 2).
Visto che ci troviamo in condizioni speciali vedremo che ci sono dei metodi semplificati per verificare l’equivalenza.
Verifica in passo 2
Assumiamo che:
F
sia l’insieme di dipendenze funzionaliG
sia l’insieme di dipendenze funzionali “ridotto”Notiamo che i due insieme sono identici tranne per una dipendenza
F
conterrà la dipendenza “originale” che chiameremo
F
conterrà la dipendenza “ridotta” che chiameremooss:
Per verificare l’equivalenza tra
F
eG
dobbiamo solo controllare che
la dipendenza “originale” ( si trovi in
la dipendenza “ridotta” ( si trovi in .
oss: non serve ricalcolare la chiusura di attributi di cui l’abbiamo già calcolata (non cambiano)
Esempio
Verifichiamo: se è possibile rimuovere la da , abbiamo che
Quindi dobbiamo verificare che:
Per verificare che possiamo l’algoritmo per il calcolo della chiusura di un insieme di attributi inizializzando l’input ad e si applicando le dipendenze in .
- una volta applicato l’algoritmo notiamo che ✅
Per verificare che possiamo l’algoritmo per il calcolo della chiusura di un insieme di attributi inizializzando l’input ad e si applicando le dipendenze in .
- Questo caso è molto banale infatti abbiamo che contiene quindi è ovvio che . ✅
Verifica in passo 3
Assumiamo che:
F
sia l’insieme delle dipendenze funzionali che contiene la dipendenza
G
sia uguale ad ma è stata rimossaoss: Notiamo che i due insieme differiscono soltanto per una dipendenza e che quindi
Quindi per verificare che ci resta soltanto da controllare che , che sarà sicuramente vero se
Ma visto che e differiscono soltanto per e basta verificare che ovvero che
oss: serve ricalcolare la chiusura di attributi di cui l’abbiamo già calcolata, infatti potrebbe cambiare
Esempi
Vedi altri esercizi qui
Esempio
Calcolare la copertura minimale di: