Dependencias funcionales Bases de datos Emi Höss
Ejercicio 2, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {BC D, ACD B, CG B, CG D, AB C, C B, D E, BE C, D G, CE A, CE A} FD2: {AB C, C A, BC D, CD B, D EG, BE C, CG D} FD3: {AB C, C A, D G, BE C, CG D, CE G, BC D, CD B, D E} FD4: {AB C, C A, BC D, D E, D G, BE C, CG B, CE G} FD5: {AB C, C A, BC D, D G, BE C, CG D, CE G} FD6: {C A, BC D, D E, D G, BE C, CG B, CE G} FD7: {BC D, C B, D E, BE C, ACD B, CG D, AB C, D G, CE A, CE A} Cuales son equivalentes? Cuales no?
Repaso de lo que vieron hace 15 minutos Dependencia funcional: Notacion: X Y Generalmente X, Y, W, Z denotan conjuntos de atributos A, B, C, D, R Clausura de F (F + ) Todas las dependencias funcionales que se deducen de F Reglas de inferencia para las DF s Reflexiva: Si X Y X Y Reglas de Armstrong Aumento: X Y XZ YZ (las ultimas tres se derivan de estas primeras) Transitiva: X Y, Y Z X Z Descomposicion: X YZ X Y Union: X Y, X Z X YZ Pseudotransitiva: X Y, WY Z WX Z
Repaso de lo que vieron hace 15 minutos Clausura de F (F + ) Todas las dependencias funcionales que se deducen de F Reglas de inferencia para las DF s Reflexiva: Si X Y X Y Aumento: X Y XZ YZ Transitiva: X Y, Y Z X Z Cubrimiento minimal 1 Descomponer todas las DF en dependencias normalizadas (lado derecho con un único atributo) 2 Eliminar todos los atributos redundantes del lado izquierdo. 3 Eliminar todas las dependencias funcionales redundantes.
Repaso de lo que vieron hace 15 minutos Clausura de X bajo F (X + ) Es el conjunto de atributos de estan determinados funcionalmente por X bajo las DF s de F Algoritmo para determinar X + X + = X repetir hasta que X + no cambie para cada Y Z en F si Y X + entonces X + = X + Z y comienzo de nuevo en la primera DF
Repaso de lo que vieron hace 15 minutos Como verificar si dos conjuntos de DF s son equivalentes? Hay que verificar que todas las DF s de FD1 se puedan inferir de FD2 y viceversa. Esto se puede ver de distintas maneras: Verificar que todas las dependencias de DF1-DF2 se peudan inferir de DF2 y que las dependencias de DF2-DF1 se puedan inferior de DF1 + Ver que para cada DF: X Y de DF1, Y X DF2 Mostrar que DF1 + = DF2 +
Ejemplo sencillo, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {A BD, B CD, AC E} FD2: {A BD, B CD, AC E, C A}
Ejemplo sencillo, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {A BD, B CD, AC E} FD2: {A BD, B CD, AC E, C A}
Ejemplo sencillo, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {A BD, B CD, AC E} FD2: {A BD, B CD, AC E, C A} Son equivalentes? Verificar que todas las dependencias de DF1-DF2 se peudan inferir de DF2 y que las dependencias de DF2-DF1 se puedan inferior de DF1 + Ver que para cada DF: X Y de DF1, Y X DF2 y viceversa Mostrar que DF1 + = DF2 +
Ejemplo sencillo, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {A BD, B CD, AC E} FD2: {A BD, B CD, AC E, C A} Son equivalentes? Verificar que todas las dependencias de DF1-DF2 se peudan inferir de DF2 y que las dependencias de DF2-DF1 se puedan inferir de DF1 Usando esta regla puedo ver que DF1 se infiere totalmente de DF2, dado que DF1 DF2 por lo tanto la resta es el conjunto vacio y cualquier cosa puede inferir el conjunto vacio.
Ejemplo sencillo, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {A BD, B CD, AC E} FD2: {A BD, B CD, AC E, C A} Son equivalentes? Me falta ver que DF2-DF1 se infiere de DF1. La unica dependencia que tengo que verificar entonces es: C A C A se infiere de FD1? O lo que es lo mismo A pertenece a C + FD1?
Ejemplo sencillo, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {A BD, B CD, AC E} FD2: {A BD, B CD, AC E, C A} Son equivalentes? Me falta ver que DF2-DF1 se infiere de DF1. La unica dependencia que tengo que verificar entonces es: C A C A se infiere de FD1? O lo que es lo mismo A pertenece a C + FD1? + + Como tenemos que C FD1 = C entonces A C FD1 entonces no se puede inferior de FD1
Ejercicio 2, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {BC D, ACD B, CG B, CG D, AB C, C B, D E, BE C, D G, CE A, CE A} FD2: {AB C, C A, BC D, CD B, D EG, BE C, CG D} FD3: {AB C, C A, D G, BE C, CG D, CE G, BC D, CD B, D E} FD4: {AB C, C A, BC D, D E, D G, BE C, CG B, CE G} FD5: {AB C, C A, BC D, D G, BE C, CG D, CE G} FD6: {C A, BC D, D E, D G, BE C, CG B, CE G} FD7: {BC D, C B, D E, BE C, ACD B, CG D, AB C, D G, CE A, CE A} Cuales son equivalentes? Cuales no?
Ejercicio 2, Práctica normalización FD7: {BC D, ACD B, CG D, AB C, C B, D E, BE C, D G, CE A, CE A} + CG FD7 = CDGBEA paso a paso + CG FD7 = CG Reviso desde la primera DF de la forma X Y talque X CG + + FD7 y Y CG FD7 BC D, ACD B, CG D + Como encuentro una DF que incluye los atributos CG agrego el lado derecho a CG FD7 + CG FD7 = CGD y vuelvo a comenzar BC D, ACD B, CG D, AB C, C B + CG FD7 = CGDB y vuelvo a comenzar BC D, ACD B, CG D, AB C, C B, D E + CG FD7 = CGDBE y vuelvo a comenzar BC D, ACD B, CG D, AB C, C B, D E, BE C, D G, CE A + CG FD7 = CGDBEA y vuelvo a comenzar BC D, ACD B, CG D, AB C, C B, D E, BE C, D G, CE A, CE A + Revise todas y CG FD7 no cambió. Terminé!
Ejercicio 2, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {BC D, ACD B, CG B, CG D, AB C, C B, D E, BE C, D G, CE A, CE A} FD2: {AB C, C A, BC D, CD B, D EG, BE C, CG D} Son equivalentes? Por qué? Sin necesidad de hacer un dibujo completo, podemos notar que en FD1 llega al atributo B solamente con una flecha de C. Esto nos da la pauta de que acá puede haber un problema dado que en FD2 a ese atributo solamente le llega una flecha de CD. C B se infiere de FD2? O lo que es lo mismo A pertenece a C + FD2? + + Como tenemos que C FD2 = CA entonces B C FD2 entonces no se puede inferir de FD2 No son equivalentes
Ejercicio 2, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD1: {BC D, ACD B, CG B, CG D, AB C, C B, D E, BE C, D G, CE A, CE A} FD7: {BC D, ACD B, CG D, AB C, C B, D E, BE C, D G, CE A, CE A} Son equivalentes? Por qué? FD7 FD1 por lo tanto FD7 FD1 = { } Trivialmente FD1 infiere FD7 Haciendo la resta FD1 FD7 = {CG B} CG B se infiere de FD7? O lo que es lo mismo B pertenece a CG + FD7? + + Como tenemos que CG FD7 = CDGBEA entonces B CG FD3 entonces se puede inferir de FD7. Entonces FD1 se puede inferir de FD7 Entonces FD1 y FD7 son equivalentes
Ejercicio 2, Práctica normalización Considerar los siguientes conjuntos de dependencias funcionales FD5: {AB C, C A, BC D, D G, BE C, CG D, CE G} FD6: {C A, BC D, D E, D G, BE C, CG B, CE G} Son equivalentes? Por qué? FD6 FD5 por lo tanto FD6 FD5 = { } Trivialmente FD5 infiere FD6 Haciendo la resta FD5 FD6 = {AB C} AB C se infiere de FD6? O lo que es lo mismo C pertenece a AB + FD6? + + Como tenemos que AB FD6 = AB entonces C AB FD6 entonces no se puede inferir de FD6. Entonces FD5 no se puede inferir de FD6 Entonces FD5 y FD6 no son equivalentes
Descomposicion BCNF SPI Sea la relación R3 = (A, B, C, D, E, F, G) Con el siguiente conjunto de dependencias funcionales: FD9: {A BD, B CD, AC E, BF G, G B } Calcular la descomposicion en BCNF y SPI
Descomposicion BCNF SPI Precondición: la relación no está ya en BCNF. 1. Calcular las claves y un cubrimiento minimal del conjunto de DF (Esto último no es indispensable, pero simplifica el trabajo facilitando el cálculo de las DFs que se proyectan sobre los esquemas). 2. Elegir una DF que viole BCNF, y generar una nueva relación con todos los atributos de esa DF. Quitar de la relación original los atributos que estaban en la parte derecha de la DF. Esta descomposición es SPI por la regla de descomposición binaria. 3. Proyectar las DF de F+ sobre las dos relaciones generadas. Si todos los atributos de una DF están en una relación, se proyecta trivialmente sobre ella. Como partimos de un cubrimiento minimal, para verificar la proyección de F+ alcanza con aplicar transitividad y pseudotransitividad sobre las DF del cubrimiento minimal. 4. Si alguna de las dos relaciones no quedó en BCNF, se debe proseguir con este algoritmo recursivamente hasta que todas cumplan BCNF.
Descomposicion BCNF SPI Sea la relación R3 = (A, B, C, D, E, F, G) Con el siguiente conjunto de dependencias funcionales: FD9: { A BD, B CD, AC E, BF G, G B } Para esto calcularemos la clave y un cubrimiento minimal La clave de este esquema respecto de FD9 es AF (clave única). Los atributos primos son AF y los no primos son BCDEG. FD9min: { A B, A E, B C, B D, BF G, G B }.
Descomposicion BCNF SPI {A B, A E, B C, B D, BF G, G B} ABCDEFG A E AE {A B, B C, B D, BF G, G B} ABCDFG B C BC {A B,B D, BF G, G B} ABDFG B D BD {A B, BF G, G B} ABFG {BF G, G B} BFG A B ABF G B A B GB FG AB AF
Descomposicion BCNF SPI A E AE {A B, A E, B C, B D, BF G, G B} ABCDEFG {A B, B C, B D, BF G, G B} ABCDFG Descomponemos A E (E no figura en ningun lado izquierdo) B C BC {A B,B D, BF G, G B} ABDFG B D BD {A B, BF G, G B} ABFG {BF G, G B} BFG A B ABF G B A B GB FG AB AF
Descomposicion BCNF SPI A E AE {A B, A E, B C, B D, BF G, G B} ABCDEFG {A B, B C, B D, BF G, G B} ABCDFG Descomponemos B C (C no figura en ningun lado izquierdo) B C BC {A B,B D, BF G, G B} ABDFG B D BD {A B, BF G, G B} ABFG {BF G, G B} BFG A B ABF G B A B GB FG AB AF
Descomposicion BCNF SPI A E AE {A B, A E, B C, B D, BF G, G B} ABCDEFG {A B, B C, B D, BF G, G B} ABCDFG Descomponemos B D (D no figura en ningun lado izquierdo) B C BC {A B,B D, BF G, G B} ABDFG B D BD {A B, BF G, G B} ABFG {BF G, G B} BFG A B ABF G B A B GB FG AB AF
Descomposicion BCNF SPI A E AE {A B, A E, B C, B D, BF G, G B} ABCDEFG {A B, B C, B D, BF G, G B} ABCDFG Descomponemos BF G (Deja un esquema de dos atributos) B C BC {A B,B D, BF G, G B} ABDFG B D BD {A B, BF G, G B} ABFG {BF G, G B} BFG A B ABF G B A B GB FG AB AF
Descomposicion BCNF SPI {A B, A E, B C, B D, BF G, G B} ABCDEFG A E AE {A B, B C, B D, BF G, G B} ABCDFG Finalmente la descomposicion queda: {AE, BC, BD, AB, BG, FG y AF} B C BC {A B,B D, BF G, G B} ABDFG B D BD {A B, BF G, G B} ABFG {BF G, G B} BFG A B ABF G B A B GB FG AB AF Descomponemos G B Descomponemos A B