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 (nessun sottoinsieme del determinante determina il determinato: non ci sono determinanti ridondanti);
  3. per nessuna dipendenza funzionale , (nessuna dipendenza è ridondante).

Si chiama copertura perché è equivalente 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 spiegato sotto ce ne darà una per qualunque insieme di , che potrebbe essere anche stesso.

  1. Si applica il primo passo: ridurre i determinati a singleton;
  2. poi il secondo a oltranza finché è possibile: eliminare determinanti ridondanti;
  3. infine il terzo a oltranza finché è possibile: eliminare dipendenze ridondanti.

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 in un passaggio intermedio.

Esempio di applicazione dell’algoritmo

Copertura minimale di

Primo passo: ridurre i determinati a singleton

Secondo passo: eliminare 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: eliminare 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à ()