Una copertura minimale di un insieme di è un insieme di dipendenze funzionali equivalente a tale che:
- per ogni dipendenza funzionale in , il determinato è un singleton. (non ci sono determinati ridondanti);
- per nessuna dipendenza funzionale esiste tale che (non ci sono determinanti ridondanti);
- per nessuna dipendenza funzionale , (nessuna dipendenza è ridondante).
Si chiama copertura perché è uguale alla chiusura di e minimale perché non ha dipendenze ridondanti, secondo le tre condizioni.
Possono esserci più coperture minimali per un dato insieme di dipendenze funzionali; l’algoritmo ce ne darà una per qualunque insieme di , che potrebbe essere anche stesso.
Si applica il primo passo, poi il secondo a oltranza finché è possibile, poi il terzo a oltranza.
N.B.: L’ordine di questi 3 passi è importante, perché ad esempio applicando per primo il terzo passo (la condizione più severa), avremmo potuto eliminare delle dipendenze che sebbene ridondanti ci avrebbero potuto aiutare a trovare altri elementi ridondanti.
Esempio di applicazione dell’algoritmo
Copertura minimale di
Primo passo: ridurre i determinati a singleton
Secondo passo: verificare se ci sono ridondanze nei determinanti.
: appartiene a ? cioè appartiene a ? No, perché non ci sono dipendenze in cui solo determina un insiemi di attributi in cui è presente ; quindi il determinante non può essere ridotto.
Lo stesso avviene per e .
: nell’insieme di dipendenze esiste , quindi non solo possiamo eliminare , ma anche tutta la dipendenza, che è un duplicato.
Terzo passo: vediamo se contiene dipendenze ridondanti.
- : viene determinato unicamente da , quindi la dipendenza non è ridondante.
- : viene determinato unicamente da , quindi la dipendenza non è ridondante.
- : , la dipendenza deve rimanere per mantenere inalterata
- : è ricavato transitivamente da , quindi si può eliminare.
La copertura minimale è
Secondo esempio
-
Ridurre i determinati a singleton:
-
Ridondanze nei determinanti: ,
A non serve per determinare . Quindi diventa .
-
Dipendenze ridondanti:
è stata tolta perché ottenuta per transitività () è stata tolta perché ottenuta per transitività ()