Si può usare l’algoritmo per il calcolo della chiusura di un insieme di attributi per determinare le chiavi di uno schema su cui è definito un insieme di dipendenze funzionali .
Si parte da un insieme di attributi che si sospetta essere una chiave e si calcola la sua chiusura con l’algoritmo.
La condizione necessaria per cui è una chiave è che esso determini tutto . Quindi se il risultato dell’algoritmo non è , esso non può essere una chiave.
Poi va controllato (sempre con l’algoritmo della chiusura) anche che non esiste nessun sottoinsieme proprio di che determina tutto .
Osservazioni:
- Conviene partire dai sottoinsiemi di con cardinalità maggiore, oppure meglio dagli insiemi con .
- Gli attributi che non sono determinati da nessuna dipendenza funzionale (non compaiono mai a destra) sono sicuramente in ogni chiave.
- Uno schema può avere più chiavi.
Test di unicità della chiave
- Si calcola l’intersezione tra tutti gli insiemi con (scelta una alla volta per ogni insieme calcolato);
- Si calcola la chiusura del risultato;
- Se la chiusura determina tutto esiste una sola chiave, altrimenti ne esistono di più e vanno trovate tutte.
Test per la 3NF (terza forma normale)
- Iniziamo calcolando le chiusure dei determinanti delle dipendenze funzionali per verificare che non sono superchiavi (la loro chiusura è e non contengono chiavi)
- Se nessuna è una superchiave, aggiungiamo a ognuna gli attributi che sicuramente fanno parte della chiave, cioè quelli che non compaiono in nessuna dipendenza funzionale oppure non compaiono mai a destra (non sono determinati da nessuna dipendenza funzionale)
Oppure, trovata la chiave di uno schema, se si trova anche una sola dipendenza parziale o transitiva, allora lo schema non è in 3NF.