Professional Documents
Culture Documents
2C.2010
Ej.1.Sea la relacin R = (A, B, C, D, E, F) y el conjunto de dependencias funcionales FD1: {ABD, BCD, ACE} FD2: {ABD, BCD, ACE, CA} FD3: {ABD, BACD, ACE, CB}
Notar que de lo anterior se desprende que ni A, ni B, ni C son superclaves de la relacin, ya que la clausura de ninguno de ellos es todo R. Pregunta: Si tenemos calculada X1+ y X2+... Podemos decir que (X1X2)+ = X1+ U X2+?
Sergio DArrigo
2C.2010
Como FD1 est incluido en FD2, entonces FD2 cubre a FD1. Para ver que todas las DF de FD2 se infieren de FD1, nos falta analizar la nica dependencia que pertenece a FD2-FD1: CA se infiere de FD1? O lo que es lo mismo A pertenece a C+ FD1? Como lo habamos calculado anteriormente, C+ FD1 = C. Como A no pertenece a C+ FD1, CA no se infiere de FD1 y por lo tanto FD1 no cubre a FD2. Por lo tanto, FD1 y FD2 no son equivalentes. (Notar que con encontrar una DF que no se infiera alcanza para decir que los conjuntos de DF no son equivalentes, no hace falta encontrar todas las que no se infieran)
Podemos detener el clculo ac, ya que encontramos A en C+ FD3 (CA pertenece a FD3+)
Podemos detener el clculo ac, ya que encontramos A en B+ FD2 B est en C+FD2? X0 = C X1 = CA X2 = CABD por CA por ABD Sergio DArrigo
2C.2010
Podemos detener el clculo ac, ya que encontramos B en C+ FD2 Luego, FD3-FD2 se infiere de FD2. Por lo tanto, FD2 y FD3 son equivalentes.
Paso 1: Dejar todos los lados derechos con un nico atributo Hay que descomponer dos DF: ABD, BCD. Queda as: CubMin = {AB, AD, BC, BD, ACE} Paso 2: Eliminar todos los atributos redundantes del lado izquierdo. Hay que analizar solamente la DF que tiene lado izquierdo compuesto: ACE C es redundante en ACE? Hay que verificar si E est en A+FD1 Como habamos calculado antes, A+ FD1 = ABCDE. Como E est en A+FD1, entonces C es redundante en ACE y podemos reemplazar esta DF por AE Si el primer atributo que analizamos no fuese redundante, hay que seguir analizando uno a uno el resto de los atributos del lado izquierdo hasta encontrar uno redundante y proceder como hicimos ac. Si no encontramos ningn atributo redundante del lado izquierdo, la dependencia tiene que quedar sin modificaciones en CubMin. Ojo, podra pasar que ms de un atributo sea redundante. En ese caso hay que quitar slo uno de ellos y volver a verificar de nuevo la redundancia para esa dependencia (si el lado izquierdo qued compuesto). CubMin = {AB, AD, BC, BD, AE} Paso 3: Eliminar todas las dependencias funcionales redundantes. Hay que revisar una por una todas las DF. En caso de que una sea redundante, se la elimina de CubMin y se sigue analizando el resto tomando como referencia el nuevo CubMin. AB es redundante en CubMin? Hay que verificar si B est en A+CubMin-{AB} Tenemos que CubMin - {AB} = {AD, BC, BD, AE}. A+CubMin-{AB} = ADE. Luego AB no es redundante. CubMin queda igual. AD es redundante en CubMin? Hay que verificar si D est en A+CubMin-{AD}
Sergio DArrigo
2C.2010
Tenemos que CubMin - {AD} = {AB, BC, BD, AE}. A+CubMin-{AD} = ABECD. Luego AD es redundante. La eliminamos de CubMin. El nuevo CubMin queda {AB, BC, BD, AE} BC es redundante en CubMin? Hay que verificar si C est en B+CubMin-{BC} Tenemos que CubMin - {BC} = {AB, BD, AE}. B+CubMin-{BC} = BD. Luego BC no es redundante. CubMin queda igual. BD es redundante en CubMin? Hay que verificar si D est en B+CubMin-{BD} Tenemos que CubMin - {BD} = {AB, BC, AE}. B+CubMin-{BD} = BC. Luego BD no es redundante. CubMin queda igual. AE es redundante en CubMin? Hay que verificar si E est en A+CubMin-{AE} Tenemos que CubMin - {AE} = {AB, BC, BD}. A+CubMin-{AE} = ABCD. Luego AE no es redundante. CubMin queda igual. No quedan ms DF por analizar. Por lo tanto, tenemos que {AB, BC, BD, AE} es un cubrimiento minimal de FD1 Comparando los diagramas, se puede apreciar intuitivamente lo que pas
Sergio DArrigo
2C.2010
Muy importante!!! No alterar el orden de los pasos en el algoritmo, podra no alcanzarse un cubrimiento minimal Por ejemplo, supongamos que tenemos R=ABCD y F = {ABC, ABCD y DC} y apliquemos el algoritmo intercambiando los pasos 2 y 3 (no lo haremos en detalle, slo mostramos aspectos relevantes queda como ejercicio verificar las afirmaciones de este ejemplo) Paso 1.- Como todas las partes derechas tienen un nico elemento, FMin = F Paso 3.- Eliminar dependencias redundantes No hay. FMin no cambia Paso 2.- Eliminamos atributos redundantes de partes izquierdas En ABC no hay atributos redundantes En ABCD, el atributo C es redundante (verificar!), por lo cual lo eliminamos, dejando la dependencia como ABD DC trivialmente no tiene atributos redundantes en la parte izquierda
Habiendo realizado los 3 pasos, el conjunto de dependencias obtenido es {ABC, ABD, DC}, y claramente no es un cubrimiento minimal, ya que la dependencia ABC es redundante !!! Ejercicios para pensar: Calcular un cubrimiento minimal de FD2 Se pueden obtener distintos cubrimientos minimales aplicando el algoritmo? (Pista: tomar F={AB, BA, ABC}) Sean FD4 = {AB, BC, CA} y FD5 = {AC, CB, BA}. Es FD5 en cubrimiento minimal de FD4?
Sergio DArrigo
2C.2010
Como ACF es superclave pero no es minimal, entonces podemos afirmar que ADF no es una clave de la relacin R respecto de FD1 Si quisiramos encontrar todas las claves, podramos probar este procedimiento con las diferentes combinaciones de atributos, aunque claramente no sera eficiente Ms adelante veremos el algoritmo para encontrar claves de una relacin respecto de un conjunto de dependencias funcionales, que evita probar con todas las combinaciones.
La descomposicin de R en R1=(A, E, F), R2= (A, B, C) y R3= (B, D) es SPI respecto de FD1?
Recordemos que FD1: {ABD, BCD, ACE} Al ser una descomposicin en ms de dos relaciones, tenemos que aplicar el Algoritmo del Tableaux. Se arma una matriz con las relaciones en las filas y los atributos en las columnas. Cada elemento (i,j) tendr valor aj si el atributo de la columna j est en la relacin de la fila i, En caso contrario, tendr valor bij. Luego se realizan iteraciones aplicando las siguientes transformaciones: Para cada DF XY, si varias filas tienen idntico valor en la columnas correspondientes a los atributos X, igualar para esas filas las columnas correspondientes a los atributos Y, de acuerdo a lo siguiente: si alguno de ellos es aj , todos los de esa columna quedarn con valor aj para las filas mencionadas. Si ninguno es aj , todos se igualarn con alguno de los bij. La iteracin termina cuando se pas por todas las DF, o cuando alguna fila tiene todos valores ai. Si luego de la iteracin no se logr esta condicin se deben volver a realizar iteraciones hasta encontrar todos valores ai en una fila o hasta que una iteracin completa no modifique la matriz. Si se encontr una fila con ai, la descomposcin es SPI, si no, no lo es.
Sergio DArrigo
2C.2010
A a1 a1 b31
B b12 a2 a2
C b13 a3 b33
D b14 b24 a4
E a5 b25 b35
F a6 b26 b36
R3 = BD Iteracin 1: ABD
R1 = AEF R2 = ABC
A a1 a1 b31 A
R1 = AEF R2 = ABC
B a2 a2 a2 B a2 a2 a2
C b13 a3 b33 C a3 a3 a3
D b14 b14 a4 D a4 a4 a4
R3 = BD BCD
a1 a1 b31
R3 = BD ACE
No hace falta seguir, la primer fila tiene todos ai !! Por lo tanto, la descomposicin es SPI
Pregunta: si hubisemos elegido las DF en otro orden (por ej a la inversa) hubisemos obtenido el mismo resultado? Hubiese podido terminar el algoritmo en la primera iteracin?
Sergio DArrigo
2C.2010
Sergio DArrigo
2C.2010
Pregunta si una descomposicin es SPI necesariamente tiene que ser SPDF? y a la inversa? Veamos los siguientes ejemplos Sea R = (ABC), F={AB}. La descomposicin R1=(AB) y R2=(BC), es SPDF pero no es SPI. Sea R = (ABC), F={ABC, CA}. La descomposicin R1=(BC) y R2=(CA), es SPI pero no es SPDF. Queda como ejercicio la verificacin de las afirmaciones anteriores.
Verificando con un atributo adicional sobre los anteriores que no eran clave. Notar que no tiene sentido agregarle A, B o C a FD o FE, ya que sera superclave (no minimal) slo tenemos que considerar entonces a D y F (cuando corresponda)
Sergio DArrigo
2C.2010
FDE+FD4?
El caso faltante FED en realidad es el mismo que FDE, ya que se trata de conjuntos. Al no haber ms combinaciones por probar, el algoritmo termina. Las claves son FA, FB y FC IMPORTANTE! Un error comn es pensar que una clave minimal es la clave que tiene menos atributos es decir que si por ej, tengo una clave minimal de 2 atributos, las claves de 3 atributos no son minimales este razonamiento no es correcto!!! Puede haber claves minimales con diferente cantidad de atributos para una misma relacin y conjunto de dependencias funcionales. Una clave es minimal si ningn subconjunto de ella es clave (y no tiene nada que ver con el tamao de las otras claves). Por ejemplo, supongamos que tenemos R=ABCD y F={ABCD, CAB} Calculemos sus claves aplicando el algoritmo: Como todos los atributos figuran en la parte de alguna dependencia, partimos de S=vaco Seguimos agregando atributos de a 1, 2, etc y vemos si son clave A+F= A. B+F = B. C+F=CABD. D+F=D. A no es clave B no es clave C es clave! D no es clave
Por lo que decamos antes, aqu no hay que frenar aunque hayamos encontrado una clave de 1 atributo, tenemos que seguir buscando si hay claves con ms atributos, siguiendo el algoritmo AB+F=ABCD. AD F=AD. BD F=BD.
+ +
No se puede seguir ms Si quisiramos agregarle atributos a AD o BD, tendramos superclaves Por lo tanto, todas las claves de R respecto de F son C y AB
10
Sergio DArrigo
2C.2010
Ej.2.Sea la relacin R2 = (A, B, C, D) y los siguientes conjuntos de dependencias funcionales: FD4 = {ABC, CA, CD} FD5 = {ABC, CD} FD6 = {ABC, ABD, CA} FD7 = {ABD, AC, CA} FD8 = {ABC, ABD}
11
Sergio DArrigo
2C.2010
12
Sergio DArrigo
2C.2010
13
Sergio DArrigo
2C.2010
Ej.3.Sea la relacin R3 = (A, B, C, D, E, F, G) y el siguiente conjunto de dependencias funcionales: FD9: {ABD, BCD, ACE, BFG, GB }.
14
Sergio DArrigo
2C.2010
Como la clave AF no est en ningn esquema, agregamos uno nuevo que la contenga. Tenemos entonces AB, AE, BC, BD, BFG, GB y AF. Como las dependencias AB y AC tienen la misma parte izquierda, se unifican AB y AE en ABE. Como las dependencias BC y BD tienen la misma parte izquierda, se unifican BC y BD en BCD. Como GB est incluido en BFG, se unifican en BFG. Por lo tanto, nuestra descomposicin 3FN SPI y SPDF queda {ABE, BCD, BFG, AF}
15
Sergio DArrigo
2C.2010
A partir de lo desarrollado, obtenemos una descomposicin BCNF SPI con los siguientes esquemas {AE, BC, BD, AB, BG y BF}. Con la descomposicin anterior podramos dejarlo (de hecho, en la resolucin de ejercicios no exigiremos ms pasos). De todos modos, al igual que en el algoritmo de sntesis, podemos fusionar relaciones resultantes que tengan proyectada dependencias con idntico lado izquierdo. Aplicando lo antedicho, podramos unificar AE con AB, y tambin BC con BD. Con esta mejora, la descomposicin BCNF SPI queda {ABE, BCD, AF, BG, FG}. Comentario: esto es muy importante hacerlo en casos reales, ya que la descomposicin resultante del algoritmo en general estar muy fragmentada, como consecuencia de basarnos en dependencias que siempre tienen un nico elemento en el lado derecho (por pertenecer a un cubrimiento minimal). Notar que si cuando tenamos la relacin ABFG hubisemos elegido para descomponer segn AB, hubiesen quedado los esquemas AB y AFG. Sobre el primero se proyectaba AB, pero BFG y GB se perdan. De todos modos, deberamos proyectar una nueva DF (AFG) sobre AFG , que se obtena aplicando pseudotransitividad sobre AB y BFG. Igualmente no hubiese sido una buena eleccin, ya que nos haca perder dos DF.
16
Sergio DArrigo