Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Normalización Clase Práctica SPI y SPDF Andrea Manna Departamento de Computación - Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Base de Datos 2do. Cuatrimestre 2015 Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Esquema General 1 Introducción 2 Sin pérdida de información 3 Preservación de Dependencias Funcionales Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Esquema General 1 Introducción 2 Sin pérdida de información 3 Preservación de Dependencias Funcionales Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Dos Características de una Buena Descomposición Sin Pérdida de Información Preservación de Dependencias Funcionales Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Esquema General 1 Introducción 2 Sin pérdida de información 3 Preservación de Dependencias Funcionales Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Introducción Esquema General 2 Sin pérdida de información Introducción Descomposición binaria Algoritmo del Tableau Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Introducción Definición Si R es un esquema de relación descompuesto en los esquemas R1 , R2 , ..., Rk y F es un conjunto de dependencias, decimos que la descomposición es sin pérdida de información (SPI) con respecto a F , si para toda relación r para R que satisfaga F : r = πR1 (r ) ./ πR2 (r ) ./ . . . ./ πRk (r ) Es decir, no debe perderse información en el proceso de descomposición, de manera tal que r es la junta natural de sus proyecciones sobre los Ri Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Introducción Estrategias para comprobar SPI Descomposiciones de dos esquemas Descomposición binaria Descomposiciones en más de dos esquemas Algoritmo del Tableau Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Descomposición binaria Esquema General 2 Sin pérdida de información Introducción Descomposición binaria Algoritmo del Tableau Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Descomposición binaria Teorema de la Descomposición Binaria La descomposición ρ de R, ρ = (R1 , R2 ) es SPI respecto a un conjunto de dependencias funcionales F sí y sólo sí: F + contiene la DF: R1 ∩ R2 → (R1 - R2 ) o F + contiene la DF: R1 ∩ R2 → (R2 - R1 ) Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Descomposición binaria Ejemplo Sea R = ABC y F = {A → B}. Pregunta: La descomposición de R en AB y AC es SPI? Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Descomposición binaria Ejemplo Sea R = ABC y F = {A → B}. Pregunta: La descomposición de R en AB y AC es SPI? Resp: Sí. AB ∩ AC = A, AB - AC = B, y A → B está en F + . Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Descomposición binaria Ejemplo Sea R = ABC y F = {A → B}. Pregunta: La descomposición de R en AB y AC es SPI? Resp: Sí. AB ∩ AC = A, AB - AC = B, y A → B está en F + . Tarea para el hogar: La descomposición de R en AB y BC es SPI? Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Descomposición binaria Ejemplo No todas las descomposiciones son sin pérdida, dado que existen proyecciones cuya reunión no dan exactamente la relación original. Ejemplo: N_Empleado Lopez Lopez Lopez Perez Funcion diseñador programador diseñador diseñador N_Proyecto Nueva España Emprendedor Emprendedor Emprendedor Se puede descomponer en dos tablas: N_Empleado Funcion Funcion Lopez diseñador diseñador Lopez programador programador Perez diseñador diseñador Andrea Manna SPI y SPDF N_Proyecto Nueva España Emprendedor Emprendedor DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Descomposición binaria Ejemplo Sin embargo, cuando se reunen las dos tablas, se obtienen tuplas adicionales que no estaban en la original. Estas tuplas se llaman espúreas creadas por los procesos de proyección y reunión. Ya que sin la tabla original, no hay forma de identificar cuáles tuplas son genuinas y cuáles espúreas, se puede perder información (aún cuando se tienen más tuplas) si se sustituyen las proyecciones para la relación original: N_Empleado Lopez Lopez Lopez Perez Perez Andrea Manna SPI y SPDF Funcion diseñador programador diseñador diseñador diseñador N_Proyecto Nueva España Emprendedor Emprendedor Nueva España Emprendedor DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Esquema General 2 Sin pérdida de información Introducción Descomposición binaria Algoritmo del Tableau Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Definición de Tableau Dado R = (A1 , . . . , An ), un tableau T para una descomposición ρ = (R1 ,...,Rk ) de R se define de la siguiente forma: 1 T tiene n columnas, una para cada atributo de R 2 T tiene k filas, una para cada esquema de ρ 3 Dadas la fila i y la columna j (esquema Ri y atributo Aj ), el contenido del tableau será: aj si Aj ∈ Ri o bij si Aj ∈ / Ri Los aj se denominan símbolos distinguidos, y los bij no distinguidos. Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Algoritmo del Tableau INPUT: Un esquema de relación R, un conjunto de dependencias funcionales F , y una descomposición ρ. OUTPUT: Una decisión de si ρ es SPI. Construir el Tableau T mientras haya cambios sobre T para cada df X → Y ∈ F buscar filas que coincidan en todos los símbolos de X Si se encontrasen dos filas, igualar los simbolos para los atributos de Y. Cuando se igualan 2 símbolos, si alguno de ellos es aj , asignarle al otro aj . Si ellos son bij y blj , asignarle a ambos bij o blj . Si hay una fila con todos símbolos distinguidos, retornar Sí end (mientras) Retornar No Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 1 Sea R = ABCDE, F = {A → B, D → C}. Decidir si la descomposición ρ = {ABC, CDE, ADE} es SPI. Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 1 - Tableau Inicial R = ABCDE, F = {A → B, D → C}, ρ = {ABC, CDE, ADE} ABC CDE ADE Andrea Manna SPI y SPDF A a1 b21 a1 B a2 b22 b32 C a3 a3 b33 D b14 a4 a4 E b15 a5 a5 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 1 - Tableau Intermedio R = ABCDE, F = {A → B, D → C}, ρ = {ABC, CDE, ADE} A→B ABC CDE ADE Andrea Manna SPI y SPDF A a1 b21 a1 B a2 b22 b32 C a3 a3 b33 D b14 a4 a4 E b15 a5 a5 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 1 - Tableau Intermedio R = ABCDE, F = {A → B, D → C}, ρ = {ABC, CDE, ADE} A→B ABC CDE ADE Andrea Manna SPI y SPDF A a1 b21 a1 B a2 b22 a2 C a3 a3 b33 D b14 a4 a4 E b15 a5 a5 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 1 - Tableau Intermedio R = ABCDE, F = {A → B, D → C}, ρ = {ABC, CDE, ADE} D→C ABC CDE ADE Andrea Manna SPI y SPDF A a1 b21 a1 B a2 b22 a2 C a3 a3 b33 D b14 a4 a4 E b15 a5 a5 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 1 - Tableau Final R = ABCDE, F = {A → B, D → C}, ρ = {ABC, CDE, ADE} D→C ABC CDE ADE Andrea Manna SPI y SPDF A a1 b21 a1 B a2 b22 a2 C a3 a3 a3 D b14 a4 a4 E b15 a5 a5 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 1 - Tableau Final R = ABCDE, F = {A → B, D → C}, ρ = {ABC, CDE, ADE} ABC CDE ADE A a1 b21 a1 B a2 b22 a2 C a3 a3 a3 D b14 a4 a4 E b15 a5 a5 Como hay una fila con todos símbolos distinguidos, ρ es SPI. Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 Sea R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}. Decidir si la descomposición ρ = {ABD, DEF , FGC, CHI} es SPI. Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Inicial R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} ABD DEF FGC CHI Andrea Manna SPI y SPDF A a1 b21 b31 b41 B a2 b22 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b28 b38 a8 I b19 b29 b39 a9 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Intermedio R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} D→H ABD DEF FGC CHI Andrea Manna SPI y SPDF A a1 b21 b31 b41 B a2 b22 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b28 b38 a8 I b19 b29 b39 a9 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Intermedio R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} D→H ABD DEF FGC CHI Andrea Manna SPI y SPDF A a1 b21 b31 b41 B a2 b22 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b18 b38 a8 I b19 b29 b39 a9 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Intermedio R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} H → AD ABD DEF FGC CHI Andrea Manna SPI y SPDF A a1 b21 b31 b41 B a2 b22 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b18 b38 a8 I b19 b29 b39 a9 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Intermedio R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} H → AD ABD DEF FGC CHI Andrea Manna SPI y SPDF A a1 a1 b31 b41 B a2 b22 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b18 b38 a8 I b19 b29 b39 a9 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Intermedio R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} A→B ABD DEF FGC CHI Andrea Manna SPI y SPDF A a1 a1 b31 b41 B a2 b22 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b18 b38 a8 I b19 b29 b39 a9 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Intermedio R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} A→B ABD DEF FGC CHI Andrea Manna SPI y SPDF A a1 a1 b31 b41 B a2 a2 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b18 b38 a8 I b19 b29 b39 a9 DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Algoritmo del Tableau Verificación SPI - Ejercicio 2 - Tableau Final R = ABCDEFGHI, F = {A → B, CD → F , H → AD, I → C, D → H}, ρ = {ABD, DEF , FGC, CHI} ABD DEF FGC CHI A a1 a1 b31 b41 B a2 a2 b32 b42 C b13 b23 a3 a3 D a4 a4 b34 b44 E b15 a5 b35 b45 F b16 a6 a6 b46 G b17 b27 a7 b47 H b18 b18 b38 a8 I b19 b29 b39 a9 Como no hay ninguna fila con todos símbolos distinguidos, y aunque sigamos iterando nuevamente por todas las dependencias, ninguna alterará el tableau, ρ NO es SPI. Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Esquema General 1 Introducción 2 Sin pérdida de información 3 Preservación de Dependencias Funcionales Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Introducción Esquema General 3 Preservación de Dependencias Funcionales Introducción Ejercitación Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Introducción Preservación de Dependencias Funcionales Dados un esquema de relación R, una descomposición ρ = (R1 , . . . , Rk ), y un conjunto F de dependencias funcionales. πz (F ): proyección de F sobre un conjunto de atributos Z Conjunto de dependencias X → Y en F + tal que XY ⊆ Z Testeo (orden exponencial) S La descomposición ρ preserva F si F + = ( ki=1 πRi (F ))+ Es decir, la descomposición ρ preserva el conjunto de dependencias F si la unión de todas las dependencias en πRi (F ) implica lógicamente a todas las dependencias en F Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Introducción Testeo Polinomial de Preservación de Dependencias Funcionales Dados un esquema de relación R, una descomposición ρ = (R1 , . . . , Rk ), y un conjunto F de dependencias funcionales. Para toda dependencia funcional X → Y ∈ F : Verificar que se preserva X → Y : Z=X while Z cambia for i = 1 to k do /* clausura con respecto a F */ Z = Z ∪ ((Z ∩ Ri )+ ∩ Ri ) Si Y * Z retornar No Retornar Sí Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Esquema General 3 Preservación de Dependencias Funcionales Introducción Ejercitación Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Preservación de Dependencias Funcionales: Ejercicio Sean R = ABCDE y F = {AB → C, A → D, D → E, E → C}. Decidir si la descomposición ρ = {AD, DE, ECB} es sin pérdida de dependencias funcionales (SPDF). Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Preservación de Dependencias Funcionales: Resolución Ejercicio R = ABCDE F = {AB → C, A → D, D → E, E → C} ρ = {AD, DE, ECB} Estrategia de Resolución: Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Preservación de Dependencias Funcionales: Resolución Ejercicio R = ABCDE F = {AB → C, A → D, D → E, E → C} ρ = {AD, DE, ECB} Estrategia de Resolución: Las dependencias A → D, D → E, E → C se preservan trivialmente (por qué?), y no es necesario aplicarles el algoritmo. Le aplicaremos el algoritmo a la dependencia AB → C para ver si se preserva. Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Preservación de Dependencias Funcionales: Resolución Ejercicio R = ABCDE F = {AB → C, A → D, D → E, E → C} ρ = {AD, DE, ECB} Queremos verificar que se preserva AB → C Verificar que se preserva X → Y : Z=X while Z cambia for i = 1 to k do Z = Z ∪ ((Z ∩ Ri )+ ∩ Ri ) Si Y * Z retornar No Z = AB Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Preservación de Dependencias Funcionales: Resolución Ejercicio R = ABCDE F = {AB → C, A → D, D → E, E → C} ρ = {AD, DE, ECB} Queremos verificar que se preserva AB → C Verificar que se preserva X → Y : Z=X while Z cambia for i = 1 to k do Z = Z ∪ ((Z ∩ Ri )+ ∩ Ri ) Si Y * Z retornar No Z = Z ∪((Z ∩R1 )+ ∩R1 ) = {A, B}∪(({A, B}∩{A, D})+ ∩{A, D}) = {A, B} ∪ ((A)+ ∩ {A, D}) = {A, B} ∪ ({A, D, E, C} ∩ {A, D}) = {A, B, D} C no está incluido en Z; seguimos... Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Preservación de Dependencias Funcionales: Resolución Ejercicio R = ABCDE F = {AB → C, A → D, D → E, E → C} ρ = {AD, DE, ECB} Queremos verificar que se preserva AB → C Verificar que se preserva X → Y : Z=X while Z cambia for i = 1 to k do Z = Z ∪ ((Z ∩ Ri )+ ∩ Ri ) Si Y * Z retornar No Z = Z ∪((Z ∩R2 )+ ∩R2 ) = {A, B, D}∪(({A, B, D}∩{D, E})+ ∩{D, E}) = {A, B, D} ∪ ((D)+ ∩ {D, E}) = {A, B, D} ∪ ({D, E, C} ∩ {D, E}) = {A, B, D, E} C no está incluido en Z; seguimos... Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Preservación de Dependencias Funcionales: Resolución Ejercicio R = ABCDE F = {AB → C, A → D, D → E, E → C} ρ = {AD, DE, ECB} Queremos verificar que se preserva AB → C Verificar que se preserva X → Y : Z=X while Z cambia for i = 1 to k do Z = Z ∪ ((Z ∩ Ri )+ ∩ Ri ) Si Y * Z retornar No Z = Z ∪ ((Z ∩ R3 )+ ∩ R3 ) = {A, B, D, E} ∪ (({A, B, D, E} ∩ {E, C, B})+ ∩ {E, C, B}) = {A, B, D, E} ∪ ((EB)+ ∩ {E, C, B}) = {A, B, D, E} ∪ ({E, B, C} ∩ {E, C, B}) = {A, B, D, E, C} Ahora sí C está incluido en Z: la dependencia AB → C se preserva Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Ejercitación Resolución Ejercicio de Parcial Dados: R= (A,B,C,D,E,F,G) C → BD D → G G → E FA → D F → G Se pide: 1 Calcular todas las claves e indicar en que FN se encuentra el esquema. 2 Indicar si la descomposición (CBD,DEG,AFG) es SPI. Justificar. 3 ¿La descomposición anterior es SPDF?. Justificar. 4 Hallar una descomposición en 3FN SPI y SPDF utilizando el algoritmo visto en clase. 5 ¿La descomposición hallada se encuentra también en FNBC?. Justificar. Andrea Manna SPI y SPDF DC-FCEN-UBA Introducción Sin pérdida de información Preservación de Dependencias Funcionales Bibliografía Bibliografía Referencia Jeffrey D. Ullman "Principles of Database and Knowledge-base systems", Volumen I, Computer Science Press, 1988 (capítulo 7). Andrea Manna SPI y SPDF DC-FCEN-UBA