Hay un algoritmo bien conocido para hacer esto. No lo recuerdo, pero el ejercicio parece ser lo suficientemente simple como para no usarlo.
Creo que esto tiene que ver con la transitividad:
CurrentKey = {A, B, C, D, E, F}
Usted sabe D determina E y E determina F. Por lo tanto, D F determina por transitividad. Como F no determina nada, podemos quitarlo y como E se puede obtener a partir de D podemos quitarlo así:
CurrentKey = {A, B, C, D}
como se determina AB C y C no determina nada Sabemos que puede' t ser parte de la clave, por lo que eliminarla:
CurrentKey = {A, B, D}
Finalmente sabemos determina D para que podamos retirarlo de la tecla:
CurrentKey = {A, B}
Si una vez que tenga esto posible clave, puedes recrear todas las dependencias funcionales es es una clave posible.
PD: Si le sucede que tiene el algoritmo útil, por favor, puesto que como yo estaría encantado de volver a aprender que :)
Creo que A y D tienen un equivalente de 1-1 en el esquema. – RBarryYoung
Este proceso no determina necesariamente una clave principal (una sola clave). (La "clave principal" está en camino de ser principalmente un concepto SQL, y no un concepto relacional.) Este proceso, aplicado correctamente, le dará un * conjunto * de claves candidatas. Cómo elegir una clave primaria de un conjunto de claves candidatas no es parte del proceso. –
Sí, tienes razón. Este proceso le dará las claves candidatas :)) – mrjasmin