C'è un algoritmo ben noto per fare questo. Non me lo ricordo, ma l'esercizio sembra essere abbastanza semplice da non usarlo.
Penso che questo è tutto transitività:
CurrentKey = {A, B, C, D, E, F}
Sai D determina E ed E determina F. Quindi, D determina F per transitività. Poiché F non determina nulla, possiamo rimuoverlo e come E può essere ottenuto da D possiamo rimuoverlo così:
CurrentKey = {A, B, C, D}
come AB determina C e C non determina nulla sappiamo che può' t essere parte della chiave, in modo da rimuoverlo:
CurrentKey = {A, B, D}
Infine sappiamo determina D in modo da poter rimuovere quest'ultimo dalla chiave:
CurrentKey = {A, B}
Se una volta che hai questa chiave è possibile, puoi ricreare tutte le dipendenze funzionali è una chiave possibile.
PS: Se vi capita di avere l'algoritmo a portata di mano, si prega di inviare come sarei felice di ri-imparare che :)
fonte
2012-04-15 17:52:32
Penso che A e D siano equivalenti a 1-1 nello schema. – RBarryYoung
Questo processo non determina necessariamente una chiave primaria (una singola chiave). ("La chiave primaria" è sulla buona strada per essere principalmente un concetto SQL, e non un concetto relazionale.) Questo processo, applicato correttamente, ti fornirà un * set * di chiavi candidate. Come scegliere una chiave primaria da un set di chiavi candidate non fa parte del processo. –
Sì, hai ragione. Questo processo ti darà le chiavi del candidato :)) – mrjasmin