database - resueltos - normalizacion de base de datos 5 formas normales
Cobertura mÃnima y dependencias funcionales. (2)
Dadas las siguientes dependencias funcionales, ¿cómo calcularía la cobertura mínima?
A -> B, ABCD -> E, EF -> GH, ACDF -> EG
En las notas de la conferencia da la derivación para la cobertura mínima, pero no lo entiendo.
Por ejemplo, para deshacerse de ACDF -> E :
A -> B => AACD -> BACD -> E => ACD -> E => ACDF -> E
Y luego dicen, de manera similar no mantenemos ACDF -> G
Y luego entiendo que ABCD -> E se deduce a ACD -> E porque A -> B , pero no entiendo el proceso formal de cómo llegar a eso.
Entonces, mi pregunta es, ¿alguien puede proporcionar una explicación de cómo generar la cobertura mínima para un conjunto de dependencias funcionales?
Para obtener la cobertura mínima, tienes que hacer dos pasos. Para demostrarlo, primero dividiré las dependencias en múltiples (solo un atributo en el lado derecho) para hacerlo más limpio:
A -> B
ABCD -> E
EF -> G
EF -> H
ACDF -> E
ACDF -> G
Los siguientes pasos deben realizarse en este orden (# 1 y luego # 2), de lo contrario puede obtener un resultado incorrecto.
1) deshacerse de los atributos redundantes (reducir los lados izquierdos):
Tome cada lado izquierdo e intente eliminar uno de cada atributo de uno en uno, luego intente deducir el lado derecho (que ahora es solo un atributo para todas las dependencias). Si tienes éxito, puedes quitar esa letra del lado izquierdo y luego continuar. Tenga en cuenta que puede haber más de un resultado correcto, depende del orden en el que realice la reducción.
Descubrirá que puede eliminar B
de la dependencia ABCD -> E
, porque ACD -> ABCD
(use la primera dep.) Y de ABCD -> E
Puedes usar el dep. actualmente estás reduciendo, esto a veces es confuso al principio, pero si lo piensas, será claro que puedes hacerlo.
De manera similar, puede eliminar F
de ACDF -> E
, porque ACD -> ABCD -> ABCDE -> E
(obviamente, puede deducir una sola letra de la propia letra). Después de este paso obtienes:
A -> B
ACD -> E
EF -> G
EF -> H
ACD -> E
ACDF -> G
Estas reglas aún representan las mismas dependencias que el original. Tenga en cuenta que ahora tenemos una regla duplicada ACD -> E
Si lo considera todo como un conjunto (en el sentido matemático), entonces, por supuesto, no puede tener el mismo elemento dos veces en un conjunto. Por ahora, solo lo dejo aquí dos veces, porque el siguiente paso lo eliminará de todos modos.
2) deshacerse de dependencias redundantes
Ahora, para cada regla, intente eliminarlo y vea si deduce la misma regla utilizando solo los demás. En este paso usted, por supuesto, no puede usar el dep. Actualmente estás intentando eliminar (puedes hacerlo en el paso anterior).
Si toma el lado izquierdo de la primera regla A -> B
, ocúltela por ahora, verá que no puede deducir nada de A
solo. Por lo tanto esta regla no es redundante. Haz lo mismo para todos los demás. Descubrirá que puede (obviamente) eliminar una de las reglas duplicadas ACD -> E
, pero en sentido estricto, también puede usar el algoritmo. Oculte solo una de las dos mismas reglas, luego tome el lado izquierdo ( ACD
) y use la otra para deducir el lado derecho. Por lo tanto, puede eliminar ACD -> E
(solo una vez, por supuesto).
También verá que puede eliminar ACDF -> G
, porque ACDF -> ACDFE -> G
Ahora el resultado es:
A -> B
EF -> G
EF -> H
ACD -> E
Cual es la portada mínima del conjunto original.
Según yo, en las dependencias mínimas funcionales anteriores, ACDF -> G también debe incluirse porque cuando se cierra cada letra del lado izquierdo y su combinación, ninguna de ellas produce G sin incluir F
Así sería como sigue:
(A -> B, EF -> G, EF -> H, ACD -> E, ACDF -> G)