Una copertura minimale di un insieme di è un insieme di dipendenze funzionali equivalente a tale che:

  1. per ogni dipendenza funzionale in , il determinato è un singleton. (non ci sono determinati ridondanti);
  2. per nessuna dipendenza funzionale esiste tale che (non ci sono determinanti ridondanti);
  3. 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

  1. Ridurre i determinati a singleton:

  2. Ridondanze nei determinanti: ,

    A non serve per determinare . Quindi diventa .

  3. Dipendenze ridondanti:

    è stata tolta perché ottenuta per transitività () è stata tolta perché ottenuta per transitività ()