29/11/2014 Dependencias Funcionales Las dependencias funcionales son reglas independientes del tiempo que verifican los atributos en un contexto determinado DEFINICIÓN En un esquema R { A, DF} Se dice que Y depende funcionalmente de X, que se representa por: X Y si y solo si, cada valor de X tiene asociado en todo momento un único valor de Y. Descriptores Equivalentes Se dice que X e Y son equivalentes cuando: X Y Y X Y se representa: X Y Ejemplo: docIdentidad codLaboral 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 1 Dependencias Funcionales Dependencias Transitivas Sea la relación R (A, DF) y X, Y dos descriptores sobre A. Entre los descriptores X e Y se presenta una dependencia transitiva si se cumple: a) X Y = b) Existe un descriptor Z A tal que Z X = y Z Y = c) X Y, Y Z, X Z Dependencias Parciales Se dice que X Y es una dependencia parcial cuando existe un descriptor X’ X tal que X’ Y. Si no existe tal descriptor X’ X tal que X’ Y, se dice que la dependencia es total. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 2 1 29/11/2014 Dependencias Funcionales GRAFO DE DEPENDENCIAS FUNCIONALES Es un diagrama (grafo) que representa el contexto semántico observado en determinado universo, donde los nodos son atributos y los arcos representan dependencias entre nodos o agrupaciones (burbujas) de nodos. Sean los atributos {ccNro, nombre, pais, ciudad, codProducto, descripProd, color, peso, canti} y las dependencias funcionales: ccNro nombre ccNro pais ccNro ciudad codProducto descripProd codProducto color codProducto peso (ccNro , codProducto canti 29/11/2014 ccNro Nombre Pais ciudad canti codProducto descripProd Color peso Bases de Datos I - Mauricio E. Fernández N 3 Axiomas de Armstrong De un esquema R(A, DF) es posible deducir (o inferir) nuevas dependencias funcionales. Las nuevas dependencias f que se cumplen para cualquier extensión r de R, son consecuencia lógica de DF. 1. REFLEXIVIDAD: Si X Y, entonces X Y 2. AUMENTATIVIDAD: Si X Y y W Z, entonces XW YZ 3. TRANSITIVIDAD: Si X Y y Y Z entonces X Z 4. PSEUDOTRANSITIVIDAD: Si X Y y W Z, entonces XW Z 5. UNION: Si X Y y X Z entonces X YZ 6. DESCOMPOSICION: Si X YZ, entonces X Y y X Z 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 4 2 29/11/2014 Enfoque de Descomposición El enfoque de descomposición de relaciones parte de asumir la existencia de la instancia Universal Dado un conjunto de atributos A={A1, A2,…, An} y el conjunto de dependencias representado por DF sobre los atributos de A, la relación Universal U={A1, A2,…, An} se denomina relación universal y su extensión, la instancia universal {R1, R2,…, Rn} tendrá relaciones tales que cualquier tupla de una relación puede obtenerse mediante una proyección de la instancia universal. Se parte de la R.U. y aplica las reglas de descomposición para cada Forma Normal. El mayor inconveniente el calculo de las claves. Paso 0: Asumiendo la existencia de U={A1, A2,…, An} calcular las claves {Ku} de U. Paso 1: Descomponer relaciones que no estén en 1FN Paso 2: Descomponer relaciones que tengan dependencias incompletas (2FN), recalculando claves para las nuevas relaciones. Paso 3: Descomponer relaciones con dependencias transitivas (3FN) 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 5 Dependencias Funcionales Primera Forma Normal (1FN) Un esquema R(A, DF) está en primera forma normal cuando todas sus entradas son simples (no existen grupos repetitivos). Segunda Forma Normal (2FN) Un esquema R (A, DF) está en 2FN si ya está en 1FN y todos sus atributos no-principales tienen dep. funcional total respecto de cada una de las claves. (No existen dependencias parciales). Ejemplo: La relación Publicacion (artículo, revista, númeroRevista, página, editorial) y las siguientes dependencias: Artículo, Revista, Número-revista Página //Clave Revista Editorial. // No esta en 2FN 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 6 3 29/11/2014 Las Formas Normales Forma Normal Boyce Codd (BCFN) Un esquema R (A, DF) se dice que está en la forma normal Boyce-Codd (FNBC) si siempre que X A se satisface en R y A no está en X, entonces X es una superclave para R; es decir, X es una clave o contiene una clave Las únicas dependencias no triviales son aquellas en las cuales una clave determina funcionalmente uno o más atributos diferentes (una tabla está en FNBC si está en 3FN y los únicos determinantes son claves candidatas.). La forma normal Boyce-Codd aborda el tratamiento de redundancias en casos de claves alternativas, acotando el umbral de la descomposición de relaciones sin pérdida de dependencias. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 7 Las Formas Normales Tercera Forma Normal (3FN) DEFINICION: Se dice que un atributo A en un esquema R es un atributo primo si A es miembro de alguna llave de R. Si A no es miembro de ninguna llave se denomina no-primo. Un esquema R esta en Tercera Forma Normal si siempre que X A se satisface en R y A no está en X, entonces X es una superclave para R, (o A es primo). De otra forma, ningún atributo no primo depende transitivamente de ninguna clave. La 3FN evitará redundancias por mezcla de propiedades de dos entidades en la misma relación cuando existen dependencias transitivas. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 8 4 29/11/2014 Ejemplo de Normalización ORDEN DE COMPRA Cliente Nro: 001964 Nombre: Marcos Caballero Dirección: Carrera 24 #9C-48 Número Orden: 00012345 Fecha Orden: 14-Nov-2014 Nro Producto Descripción T5060 Tuerca 2 ⅛ Precio Unit. Cantidad Valor 300 200 60.000 P6231 Puntilla 1 ⅜ 150 100 15.000 KA2 Llave de Allen 1/2 2.000 20 40.000 S2489 Serrucho 7.000 5 35.000 Total Orden $200.000 OrdenCompra gcgfcs (orderNro, fechaOrd, clienteNo, nombreCli, direccionCli, (prodNno, descripPrd, precioUnPrd, cantidadOrdPrd, valorOrdPrd)*, totalOrd) * = grupos de datos que se repiten 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 9 Ejemplo de Normalización Primera Forma Normal (1FN) Definición: Una relación está (o satisface) la 1NF, sii, todos sus atributos son atómicos. Entonces OrdenCompra no esta en 1FN pues tiene datos que se repiten Pasos para convertir una relación en 1NF: Crea una nueva relación con el grupo que se repite Añadir a la nueva relación la clave primaria de la relación que la contenía Darle un nombre a la nueva entidad Determina la clave primaria de la nueva entidad Repetir hasta que no queden más atributos no atómicos OrdenItem (orderNro, prodNno, descripPrd, precioUnPrd, cantidadOrdPrd, valorOrdPrd) OrdenCompra1 (orderNro, fechaOrd, clienteNo, nombreCli, direccionCli, totalOrd) 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 10 5 29/11/2014 Ejemplo de Normalización Segunda Forma Normal (2FN) Definición: Una relación está (o satisface) la 2NF, sii, satisface la1NF y todo atributo que no forma parte de la clave primaria depende TOTALMENTE de la clave. OrdenItem no esta en 2FN pues tiene dependencias funcionales parciales Pasos para convertir una relación 1NF a 2FN: Elimina los atributos que dependen parcialmente de la clave primaria y crea con ellos una nueva relación. Añade a esta relación una copia del atributo/s del cual dependen (será la clave primaria de la nueva relación) Nombra a la nueva entidad (añade un 2 para indicar 2NF) Renombra a la entidad original (añade un 2 para indicar 2NF) Producto2 (prodNno, descripPrd, precioUnPrd) OrdenItem2 (orderNro, prodNno, cantidadOrdPrd, valorOrdPrd) 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 11 Ejemplo de Normalización Tercera Forma Normal (3FN) Definición: Una relación está (o satisface) la 3NF, sii, en esta en 2NF y todos los atributos que no son clave primaria depende completamente de la clave primaria. (NO hay dependencias funcionales transitivas) OrdenCompra1 no esta en 3FN pues tiene depend. funcionales Transitivas Pasos para convertir una relación 2NF a 3FN: Elimina los atributos que presentan dependencias transitivas y crea una nueva relación con ellos Añade a esta nueva relación una copia de los atributos con los que están relacionados (determinantes) los atributos eliminados, ellos serán la clave primaria de la nueva relación. Nombra a la nueva entidad (añade un 3 para indicar 3NF) Renombra a la entidad original (añade un 3 para indicar 3NF) Cliente3 (clienteNo, nombreCli, direccionCli) OrdenCompra3 (orderNro, fechaOrd, clienteNo, totalOrd) 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 12 6 29/11/2014 Lemas en la Normalización Lema 1: Suponga R un esquema con dependencias funcionales DF, sea ρ una descomposición de R con la propiedad LJ con respecto a DF: ρ = {R1, R2,..., Rk} y sea σ = (S1, S2) una descomposición LJ de R1, con respecto a R1(DF). Entonces la descomposición de R en (S1, S2, R2, ..., Rk) también tiene la propiedad LJ con respecto a DF. Prueba: [Se halla en ULL88 pp 404].… Lema 2: a) Cada esquema de dos atributos está en BCFN. b) Si R no está en BCFN, entonces podemos hallar atributos A y B en R tal que (R - AB) A. También puede presentarse el caso que (R - AB) B. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 13 Lemas en la Normalización Lema 3: Si tenemos un conjunto de dependencias DF sobre R y luego los proyectamos sobre R1 ⊆ R para obtener DF1, y luego proyectamos DF1 sobre R2 ⊆ R1 para obtener DF2, entonces DF2 = R2 (DF). Es decir, se puede asumir que DF era el conjunto de dependencias para R1, aunque DF presumiblemente menciona atributos que no se encuentran en R1. Prueba: [Se halla en ULL88 pp 405].… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 14 7 29/11/2014 Algoritmo de Descomposición en la Forma Normal Boyce-Codd con la Propiedad LJ IF Z contiene A y B tal que A no esté en ( Z - AB )+ THEN /* Recuerde que las clausuras se toman con respecto a DF */ RETURN: Z está en BCFN y no se puede descomponer ELSE BEGIN Hallar un A y un B; Y := Z - B; WHILE (Y contenga A y B tal que (Y - AB)+ A ) DO Y := Y - B; RETURN: La descomposición Z - A e Y; /* Y es para nuestro caso XA en el programa principal */ END; 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 15 Algoritmo de Descomposición en la BCFN con la Propiedad LJ Programa Principal del Algoritmo Z := R; /* En todo momento, Z es el esquema de la descomposición que podría no estar en BCFN */ REPEAT Descomponga Z en Z - A y XA, donde XA está en BCFN y X A; /* Usar subroutine (a) */ Adicione XA a la descomposición; Z := Z - A; UNTIL Z no pueda ser descompuesta por el lema 2b; Adicione Z a la descomposición. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 16 8 29/11/2014 Ejemplo Alg. de Descomp. En BCFN Ejemplo: Sea el esquema R (A, DF) donde: A = C (curso), P(profesor), H(hora), S(aula de clase), E (estudiante), N (nota). DF: C P HS C HP S CE N HE S //Cada curso tiene un solo profesor. //Sólo se puede dictar un curso a una hora y en un salón. //A una hora, un profesor ocupa un salón. //Un estudiante tiene una nota por cada curso que toma. //Un estudiante puede estar en un solo salón a una hora. Z := CPHSEN Se descompone Z en Z - A y XA : Usamos la subroutina: • A = C, B = P (Z-AB)+= (HSENCP CP )+=(HSEN)+ = HSENCP C (y P). Y:= Y - B = CPHSEN - P = CHSEN {A, B} = {C H}: (Y-AB)+= (CHSEN-CP)+ = (SEN)+= SEN que ⊉ C {A, B} = {C S}: (Y-AB)+= (CHSEN-CS)+= (HEN)+=HENSCP C Sirve {A, B} Y:= Y - B = CHSEN - S = CHEN Mientras haya A y B continuamos con el ciclo: {A, B} = {C H}: (Y-AB)+= (EN)+= EN que ⊉ C {A, B} = {C E}: (Y-AB)+= (HN)+= HN que ⊉ C Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 17 Ejemplo Alg. de Descomp. En BCFN {A, B} = {C N}: (Y-AB)+= (HE)+= HESCPN que C Sirve {A, B} Y:= Y - B = CHE – N = CHE Mientras haya A y B continuamos con el ciclo: ▪ {A, B} = {C H}: (Y-AB)+= (E)+= E que ⊉ C ▪ {A, B} = {C E}: (Y-AB)+= (H)+= H que ⊉ C ▪ {A, B} = {H E}: (Y-AB)+= (C)+= CP que ⊉ C CONCLUSION: No existen pares {A, B} por lo cual salimos del ciclo. Entonces, no se pueden eliminar más atributos de Y porque falla la prueba del lema 2b. Por lo tanto, Z (CPHSEN) no se puede descomponer. Que pasa con la partición CHE?: Que no contiene ninguna dependencia X A. Volvamos a retomar intentando con la pareja {C, S} : {A, B} = {C, S}: (Y-AB)+=(CHSEN-CS)+=(HEN)+=HENSCP C Sirve {A, B} Como C y S están contenidos en el cierre, ambos sirven como {A, B} Mientras Y contenga A y B tal que (Y - AB) + A Hacer Y = Y- B; Y:= Y - B = CHSEN – C = HSE ... Y regresamos al ciclo WHILE: {A, B} = {H S} : (Y-AB)+= (EN)+= EN que ⊉ H (ni S) {A, B} = {H E} : (Y-AB)+= (SN)+= SN que ⊉ H (ni E) Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 18 9 29/11/2014 Ejemplo Alg. De Descomp. En BCFN {A, B} = {H N} : (Y-AB)+= (SE)+= SE que ⊉ H (ni N {A, B} = {S E} : (Y-AB)+= (HN)+= HN que ⊉ S (ni E) {A, B} = {S N} : (Y-AB)+= (HE)+= HESCPN S (y N) Y:= Y - B := HSE ... Y regresamos al ciclo WHILE: {A, B} = {H S}: (Y-AB)+= (E)+= E que ⊉ H (ni S) {A, B} = {H E}: (Y-AB)+= (S)+= S que ⊉ H (ni E) {A, B} = {S E}: (Y-AB)+= (H)+= H que ⊉ S (ni E) En este punto no se puede eliminar más atributos porque la prueba del lema 2b falla para cada pareja. Entonces el esquema CPHSEN se puede descomponer en: i. HSE, que asume el papel de XA con X = HE y A = S ( HE S ) ii. Z = Z - A = CPHSEN - S Z = CPHEN, valor de Z para volver a iniciar. Se descompone Z en Z - A y XA: Usamos la subrutina: Z= CPHEN {A, B} = {C P}: (Z-AB)+= (HEN)+= HENSCP C (y P) Sirve el par {A, B} Y= Z - B = (CPHEN – P) = CHEN {A, B} = {C H}: (Y-AB)+= (EN)+= EN que ⊉ C (ni H) {A, B} = {C E}: (Y-AB)+= (HN)+= HN que ⊉ C (ni E) {A, B} = {C N}: (Y-AB)+= (HE)+= HESCPN C (y N) Sirve el par {A, B} Y= Z - B = CHEN – N = CHE Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 19 Ejemplo Alg. de Desc. en BCFN {A, B} = {C H}: (Y-AB)+= (E)+= E que ⊉ C (ni H) {A, B}= {C E}: (Y-AB)+= (H)+= H que ⊉ C (ni E) {A, B}= {H E}: (Y-AB)+= (C)+= CP que ⊉ H (ni E) CONCLUSION: No existen pares {A, B} por lo cual salimos del ciclo. Entonces, no se puede eliminar más atributos de Y porque falla la prueba del lema 2b. Por lo tanto, Y (CHE) no se puede descomponer. Que pasa con la partición CHE?: Que no contiene ninguna dependencia X A. Volvamos a empezar intentando con la pareja {C N}: {A, B} = {N, C}: (Y-AB)+= (HE)+= HESCPN N Sirve el par {A, B} Como C y N están contenidos en el cierre, ambos elementos sirven como {A, B} Mientras Y contenga A y B tal que (Y - AB) + A Hacer Y = Y- B; Y:= Y - B = CHEN – C = HEN Examinando la partición Y = HEN se observa que no contiene ninguna dependencia X A. Por lo cual podemos descartarla y continuamos con otra pareja {A, B} {A, B} = {H, E}: (Y-AB)+= (CN)+= CNP que ⊉ H (ni E) {A, B} = {H, N}: (Y-AB)+= (CE)+= CENP que ⊉ H (pero sí N) Por lo observado en el paso anterior podemos intentar con {N, H} como pareja {A, B} {A, B} = {N, H}: (Y-AB)+= (CE)+= CENP N (pero no H) Hacemos Y= Y- B Y:= Y - B = CHEN – H = CEN Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 20 10 29/11/2014 Ejemplo Alg. de Descomp. en BCFN {A, B} = {C, E}: (Y-AB)+= (N)+= N que ⊉ C (ni E) {A, B} = {C, N}: (Y-AB)+= (E)+= E que ⊉ C (ni N) {A, B} = {E, N}: (Y-AB)+= (C)+= CP que ⊉ E (ni N) En este punto no se puede eliminar más atributos porque la prueba del lema 2b falla para cada pareja. Entonces el esquema CPHEN se puede descomponer en: i. CEN, que asume el papel de XA con X = CE y A = N ( CE N ) ii. Z = Z - A = CPHEN - N Z = CPHE, valor de Z para volver a iniciar. Z = CPHE {A, B} = {C, P}: (Z-AB)+= (HE)+= HESCPN C (y P) Sirve el par {A, B} Y= Z - B = (CPHE – P) = CHE : CHE no contiene dependencia X A. Se descarta. {A, B} = {P, C}: (Z-AB)+= (HE)+= HESCPN P (y C) Sirve el par {A, B} Y= Z - B = (CPHE – C) = PHE La partición PHE no contiene dependencia X A. Podemos descartarla. {A, B} = {C, H}: (Z-AB)+= (PE)+= PE que ⊉ C (y H) {A, B} = {C, E}: (Z-AB)+= (PH)+= PHSC C (pero no E) Sirve el par {A, B} Y= Z - B = (CPHE – E) = CPH La partición CPH no contiene dependencias X A. Se descarta. Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 21 Ejemplo Alg. de Desc. en BCFN {A, B} = {P, H}: (Z-AB)+= (CE)+= CEPN P (pero no H) Sirve el par {A, B} Y= Z - B = (CPHE – H) = CPE {A, B} = {C, P}: (Y-AB)+= (E)+= E que ⊉ C (ni P) {A, B} = {C, E}: (Y-AB)+= (P)+= P que ⊉ C (ni E) {A, B} = {P, E}: (Y-AB)+= (C)+= CP P (pero no E) Sirve el par {A, B} Y= Y - B = CPE – E = CP Con absoluta seguridad CP está en BCFN por el lema 2a. Debemos por lo tanto, agregar CP a la descomposición: CPHEN se puede descomponer en: i. CP, que asume el papel de XA con X = C y A = P (C P) ii. Z = Z - A = CPHE - P Z = CHE, valor de Z para volver a iniciar. Z= CHE • {A, B} = {C, H}: (Y-AB)+= (E)+= E Que no contiene C (ni H) • {A, B} = {C, E}: (Y-AB)+= (H)+= H Que no contiene C (ni E) • {A, B} = {H, E}: (Y-AB)+= (C)+= CP Que no contiene H (ni E) Entonces el esquema no se puede descomponer porque falla la prueba del lema 2b. Por lo tanto, Z (CHE) esta en BCFN. Descomposiciones (CHE, CP, CEN, HSE) cumpliendo con la propiedad LJ. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 22 11 29/11/2014 Descomposición en 3FN Preservando Dependencias No siempre es posible descomponer una relación en BCFN y preservar las depend., aunque si es posible hallar una descomp. en 3FN que preserve las depenc., como se muestra en el siguiente algoritmo: ENTRADA: El esquema R (A, DF) donde se puede asumir que DF es un recubrimiento minimal no redundante. SALIDA: Una descomp. de R preserv. dep. tal que cada relación resultante se halle en 3FN con respecto a la proyección de DF sobre este esquema. METODO: Si algún atributo de R no aparece en ninguna depend. (izquierda o derecha), entonces tal atributo puede eliminarse de R, constituyendo un esquema aparte. Si una de las depend. en DF incluye todos los atributos de A, entonces la salida es R, que estará en 3FN. Si esto no es así, la descomp. ρ a la salida consiste del esquema XA por cada dep. X → A en DF. Es evidente que (Uki=1 DFi) = DF, de modo que el diseño conserva las dep. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 23 Descomposición en 3FN Preservando Depend. y verificando Propiedad LJ Como hemos visto, podemos descomponer cualquier relación R en un conjunto de esquemas ρ = (R1, ..., Rn) tal que ρ verifique la propiedad LJ y cada esquema Ri esta en BCFN (y por lo tanto en 3FN). También podemos descomponer R en σ = (S1,..., Sn) tal que σ preserve el conjunto de dep. DF, y cada Sj esta en 3FN. Podemos hallar una descomp. en 3FN que cumpla simultáneamente con las propiedades LJ y preserv. de dep., si adjuntamos a σ un esquema X que es la llave de Ri. TEOREMA: Sea σ la descomposición en 3FN de R, y sea X una llave para R. Entonces τ = σ {X} es una descomposición de R con todos sus esquemas en 3FN; la descomposición preserva dependencias y cumple la propiedad LJ. Prueba: [Se halla en ULL88 pp 411] 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 24 12 29/11/2014 Descomposición en 3FN Preservando Depend. y verificando Propiedad LJ Ejemplo: Consideremos el ejemplo anterior: Debemos entonces tomar la unión de los esquemas producidos para CPHSEN con la llave EH, para obtener una descomposición que cumple la propiedad LJ y preserva dependencias. Pero EH es un subconjunto de HES, que ya es uno de los esquemas obtenidos. Entonces EH puede eliminarse y el esquema será: { CP, HSC, HPS, CEN, HES } Aunque algún subconjunto de estas relaciones cumple con la propiedad LJ, se puede verificar que las dependencias proyectadas para cualquiera cuatro de ellas no implican el conjunto completo de dependencias DF. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 25 Algoritmo de Síntesis de Bernstein A continuación se presenta el algoritmo básico de Bernstein: 1. Calcular el recubrimiento minimal DF* del conjunto de dependencias funcionales originales DF. 2. Agrupar dependencias de DF* en particiones que tengan el mismo determinante. 3. Para cada partición se genera un esquema Ri, el cual tendrá como clave primaria el determinante y como atributos el resto de los que aparezcan en las dependencias funcionales de la partición. 4. Si existen atributos que no son determinantes, ni implicados en DF*, se forma un esquema de relación con ellos, sin ninguna dependencia funcional. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 26 13 29/11/2014 Algoritmo de Síntesis de Bernstein Ejemplo 1: Sea el esquema R (A, DF) con A = A, B, C, D, E, F, G, I, J, K, L, M, N, P, Q, R, S, T, y DF = AB C, A DEFG, E G, F DJ, G DI, DM NP, D M, L D, PR S, PQR ST, D KL Ejemplo 2: Dados los atributos A = cc, nombre, apellido, dirección, ciudad, codPostal, departamento, pais, aficion, tipoAfición, grado , y DF = (dirección , ciudad) codPostal, codPostal ciudad, ciudad (departamento, pais), departamento pais, cc (nombre, apellido, direccion), cc (ciudad, codPostal, departamento, pais), (nombre, apellido) (cc, cod, Postal), (cc, aficion) (tipoAfición, grado), aficion tipoAfición 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 27 Algoritmo de Síntesis de Bernstein Ejemplo 1: A = A, B, C, D, E, F, G, I, J, K, L, M, N, P, Q, R, S, T, y DF = AB C, A DEFG, E G, F DJ, G DI, DM NP, D M, L D, PR S, PQR ST, D KL 1. Se busca recubrimiento mínimo para DF a) Segundos miembros simples: DF(1) = AB C, A D, A E, A F, A G, E G, F D, F J, G D, G I, DM N, DM P, D M, L D, PR S, PQR S, PQR T, D K, D L b) Eliminar atributos extraños: • AB C Bi = A : B+=B A no es extraño Bi = B : A+=ADEFGIJMNPKL B no es extraño • DM N Bi = D : M+=M D no es extraño Bi = M : D+=DMKLP M no es extraño: Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 28 14 29/11/2014 Algoritmo de Síntesis de Bernstein DM P Bi = D : M+=M D no es extraño Bi = M : D+=DMKLP M no es extraño • PR S Bi = P : R+=R D no es extraño Bi = R : P+=P R no es extraño • PQR S Bi = P : (QR)+=QR P no es extraño Bi = Q : (PR)+=PRS Q si es extraño: PR S (que ya existe) • PQR T Bi = P : (QR)+=QR P no es extraño Bi = Q : (PR)+=PRS Q no es extraño Bi = R : (PQ)+=PQ R no es extraño (2) DF = AB C, A D, A E, A F, A G, E G, F D, F J, G D, G I, DM N, DM P, D M, L D, PR S, PQR T, D K, D L • Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 29 Algoritmo de Síntesis de Bernstein c) Eliminar dependencias redundantes: • • • • • • • • • • • • • • • • • • AB C : (AB)+= ABDEFGJIPMNL A D : (A)+= AEFGDJIPMKLN A E : (A)+= ADFGJINPMKL A F : (A)+= AGEFDPMKLN A G : (A)+= AFDJPMKL E G : (E)+= E F D : (F)+= FJ F J : (F)+= FDPMKLN G D : (G)+= GI G I : (G)+= GDPMKLN DM N : (D)+= DMNKL DM P : (D)+= DMNKL D M : (D)+= DPKL L D : (L)+= L PR S : (PR)+= PR PQR T : (PQR)+= PQRS D K : (D)+= DLPMN D L : (D)+= DPMNK : C (AB)+ no redundante : D (A)+ Si redundante se elimina + : E (A) no redundante : F (A)+ Si redundante se elimina : G (A)+ no redundante : G (E)+ no redundante + : D (F) no redundante : J (F)+ no redundante : D (G)+ no redundante : I (G)+ no redundante : N (D)+ no redundante + : P (D) no redundante : M (D)+ no redundante : D (L)+ no redundante : S (PR)+ no redundante + : T (PQR) no redundante : K (D)+ no redundante : L (D)+ no redundante DF(3) = AB C, A E, A G, E G, F D, F J, G D, G I, DM N, DM P, D M, L D, PR S, PQR T, D K, D L Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 30 15 29/11/2014 Algoritmo de Síntesis de Bernstein DF* = AB C, A E, A G, E G, F D, F J, G D, G I, DM N, DM P, PR S, PQR T, D M, D K, D L, L D 2. Dividimos DF* en particiones con igual determinante P1 : {AB C} P2 : {A E, A G} P3 : {E G} P4 : {F D, F J} P5 : {G D, G I} P6 : {DM N, DM P} P7 : {PR S} P8 : {PQR T} P9 : {D M, D K, D L, L D } 3. Creamos una Relación por cada partición Pi : Llave primaria el determinante y atributos el resto de la dependencia funcional Sigue… Bases de Datos I - Mauricio E. Fernández N 29/11/2014 31 Algoritmo de Síntesis de Bernstein Relación Pk Ak R1 : {ABC} AB C DF R2 : {AEG} A EG R3 : {EG} E G {E → G} R4 : {FDJ} F DJ {F → D, F → J} R5 : {GDI} G DI {G → D, G → I} R6 : {DMNP} DM NP {DM N, DM P } R7 : {PRS} PR S {PR → S} R8 : {PQRT} PQR T {PQR → T} R9 : {DMKL} D MKL {AB → C} {A → E, A → G} {D → M, D → K, D → L, L → D } 4. Si existen atributos que NO son determinantes ni implicados en DF*, se forma Esquema sin dependencias funcionales No aplica. No existen atributos que NO sean determinantes ni implicados en DF* 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 32 16 29/11/2014 Algoritmo de Síntesis de Bernstein Ejemplo 2: Dados los atributos A = cc, nombre, apellido, dirección, ciudad, codPostal, departamento, pais, aficion, tipoAfición, grado , y DF = (dirección , ciudad) codPostal, codPostal ciudad, ciudad (departamento, pais), departamento pais, cc (nombre, apellido, direccion), cc (ciudad, codPostal, departamento, pais), (nombre, apellido) (cc, codPostal), (cc, aficion) (tipoAfición, grado), aficion tipoAfición 1. Se busca recubrimiento mínimo para DF a) Segundos miembros simples: DF(1) = (dirección, ciudad) codPostal, codPostal ciudad, ciudad departamento, ciudad pais, departamento pais, cc nombre, cc apellido, cc direccion, cc ciudad, cc codPostal, cc departamento, cc pais, (nombre, apellido) cc, (nombre, apellido) codPostal, (cc, aficion) tipoAfición, (cc, aficion) grado, aficion tipoAfición Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 33 Algoritmo de Síntesis de Bernstein b) Eliminar atributos extraños: • • • • • (dirección, ciudad) codPostal Bi = dirección : ciudad+=departamento, país, ciudad dirección No extraño Bi = ciudad : dirección+=dirección ciudad No extraño (nombre, apellido) cc Bi = nombre : apellido+=apellido nombre No extraño Bi = apellido : nombre+=nombre apellido No extraño (nombre, apellido) codPostal Bi = nombre : apellido+=apellido nombre No extraño Bi = apellido : nombre+=nombre apellido No extraño (cc, aficion) tipoAfición Bi = cc: aficion+=afición, tipoAficion cc Si extraño: aficiontipoAfición (ya existe) (cc, aficion) grado Bi = cc : aficion+=afición, tipoAficion cc No extraño Bi = aficion : cc+=cc, nombre, apellido, dirección, ciudad, departamento, país, direccion, codPostal afición No extraño Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 34 17 29/11/2014 Algoritmo de Síntesis de Bernstein DF(2) = (dirección, ciudad) codPostal, codPostal ciudad, ciudad departamento, ciudad pais, departamento pais, cc nombre, cc apellido, cc direccion, cc ciudad, cc codPostal, cc departamento, cc pais, (nombre, apellido) cc, (nombre, apellido) Postal, (cc, aficion) grado, aficion tipoAfición c) Eliminar dependencias redundantes: • (dirección, ciudad) codPostal : (dirección, ciudad)+= dirección, ciudad, departamento, pais no redundante • codPostal ciudad : (codPostal )+= codPostal no redundante • ciudad departamento : (ciudad)+= ciudad, pais no redundante • ciudad pais : (ciudad)+= ciudad, departamento, país redundante se elimina • departamento pais : (departamento )+= departamento no redundante • cc nombre : (cc)+= cc,apellido,direccion,codPostal,departamento,país,ciudad no redundante • cc apellido : (cc)+= cc,nombre,apellido,direccion,ciudad,codPostal, departamento, país no redundante • cc direccion : (cc)+= cc, nombre, apellido,codPostal,ciudad,departamento,país no redundante Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 35 Algoritmo de Síntesis de Bernstein • cc departamento : • • • • • (cc)+= cc,nombre,apellido,direccion,codPostal,ciudad,departamento,país Si redundante se elimina cc país : + (cc) = cc,nombre,apellido,direccion,ciudad,codPostal, departamento, país Si redundante se elimina (nombre, apellido) cc : (nombre, apellido)+= nombre,apellido,codPostal,ciudad,departamento,país, no redundante (nombre, apellido) codPostal : (nombre, apellido)+= nombre,apellido,cc,direccion,codPostal,ciudad,departamento,país Si redundante se elimina (cc, aficion) grado : (cc, aficion)+= cc,aficion,nombre,apellido,direccion, codPostal,ciudad,departamento, país,tipoAfición no redundante aficion tipoAficion : (aficion)+= aficion no redundante DF(3) = (dirección, ciudad) codPostal, codPostal ciudad, ciudad departamento, departamento pais, cc nombre, cc apellido, cc direccion, cc codPostal, (nombre, apellido) cc, (cc, aficion) grado, aficion tipoAfición Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 36 18 29/11/2014 Algoritmo de Síntesis de Bernstein DF* = (dirección, ciudad) codPostal, codPostal ciudad, ciudad departamento, departamento pais, cc nombre, cc apellido, cc direccion, cc codPostal, (nombre, apellido) cc, (cc, aficion) grado, aficion tipoAfición 2. Dividimos DF* en particiones con igual determinante Debemos partir DF en tablas, tales que todas las dependencias con el mismo lado izquierdo estén en una tabla: NOTA: Las tablas creadas en este paso deben entregar una solución en 3FN, pero no necesariamente minimal. P1 : {(dirección, ciudad) codPostal} P2 : {codPostal ciudad} P3 : {ciudad departamento} P4 : {departamento pais} P5 : {cc (nombre, apellido), cc direccion, cc codPostal } P6 : {(cc, aficion) grado} P7 : {aficion tipoAfición } Sigue… 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 37 Algoritmo de Síntesis de Bernstein 3. Creamos una Relación por cada partición Pi : Llave primaria el determinante y atributos el resto de la dependencia funcional Relación Pk Ak R1 : {direccion, ciudad, codPostal} ciudad, dirección codPostal R2 : {ciudad, codPostal} codPostal, ciudad ciudad departamento R3 : {ciudad, departamento} R4 : {departamento, pais} R5 : {cc, nombre, apellido, direccion, codPostal} R6 : {cc, aficion, grado} R7 : {aficion, tipoAfición} departamento pais cc nombre, apellido, direccion, codPostal DF (dirección, ciudad) → codPostal, codPostal → ciudad Ciudad → departamento Departamento → pais cc → (nombre, apellido), cc → direccion, codPostal cc, aficion grado {(cc, aficion) → grado} aficion tipoAfición {aficion → tipoAfición} 4. Si existen atributos que NO son determinantes ni implicados en DF*, se forma Esquema sin dependencias funcionales No aplica. No existen atributos que NO sean determinantes ni implicados en DF* 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 38 19 29/11/2014 Dependencias Multivaluadas Empleado nombreEmp Silva Silva Silva Silva nombProyecto X Y X Y nombFamiliar Juan Ana Ana Juan DMV: nombreEmp →→ nombProyecto, nombreEmp →→ nombFamiliar Una dependencia multivaluada X →→ Y especificada sobre R, donde X y Y son subconjuntos de R, especifica la siguiente restricción sobre cualquier relación r de R: si existen las tuplas t1 y t2 en r tales que t1[X] = t2[X], entonces deben existir también dos tuplas t3 y t4 en r con las siguientes propiedades: i) t1[X] = t2 [X] = t3[X] = t4[X] ii) t1[Y] = t3[Y] y t2 [Y] = t4[Y] iii) t3[R-(XY)] = t2[R-(XY)] y t1[R-(XY)] = t4[R-(XY)] 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 39 Dependencias Multivaluadas Siempre que X→→Y se cumple en R, también se cumple que X →→ { R-(XY) }. Donde R - (XY) es lo mismo que R-(X ∪ Y) = Z Entonces X →→ Y implica X →→ Z, lo que se puede escribir como X→→Y │ Z Una DMV X→→Y en R se denomina DMV trivial si: a) Y es un subconjunto de X O b) X∪Y = R Empleados se halla en BCFN porque no hay ninguna DF que se cumpla en Empleados. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 40 20 29/11/2014 Cuarta Forma Normal (4FN) La 4FN se viola cuando una relación tiene dependencias multivaluadas indeseables y que, por tanto, pueden usarse para identificar y descomponer tales relaciones. Un esquema R está en 4FN respecto a un conjunto de dependencias F si, para cada dependencia multivaluada NO TRIVIAL X→→ Y en F+, X es una superclave de R. Empleados no esta en 4FN porque en las DMV no triviales: nombreEmp →→ nombProyecto y nombreEmp →→ nombFamiliar nombreEmp NO ES una superclave de Empleados. Vemos la 4FN con el siguiente ejemplo: 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 41 Ejemplo de la 4FN Empleado nombreEmp Silva Silva Silva Silva Bravo Bravo Bravo Bravo Bravo Bravo Bravo Bravo Bravo Bravo Bravo Bravo nombProyecto X Y X Y W X Y Z W X Y Z W X Y Z nombFamiliar Juan Ana Ana Juan Jaime Jaime Jaime Jaime Paola Paola Paola Paola Iván Iván Iván Iván Empleados con tuplas adicionales 29/11/2014 ProyectoEmpleado nombreEmp nombProyecto Silva X Silva Y Bravo W Bravo X Bravo Y Bravo Z FamiliarEmpleado nombreEmp nombFamiliar Silva Juan Silva Ana Bravo Jaime Bravo Paola Bravo Iván Proyección de Empleados sobre ProyectosEmpleado y FamiliaresEmpleado Bases de Datos I - Mauricio E. Fernández N 42 21 29/11/2014 Descomposición con Reunión sin Pérdida para Generar Relaciones 4FN Siempre que se descompone un esquema R, en R1 = (X U Y) y R2 = (R – Y) con base en una DMV X→→ Y que se cumple en R, la descomposición posee la propiedad LJ. PROPIEDAD LJ Los esquemas R1 y R2 forman una descomposición con reunión sin pérdida, si y solo si (R1 ∩ R2) →→ (R1 - R2) ( o por simetría, si y solo si (R1 ∩ R2) →→ (R2 - R1) ) 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 43 Algoritmo de Descomposición sin Pérdida para Generar Relaciones en 4FN Hacer Z= { R } //Esquema que posiblemente no este en 4FN MIENTRAS Haya una relación Q en Z que no este en 4FN DO { IF Existe una DMV NO Trivial X→→ Y que viole la 4FN en Z { Descomponer Z por dos esquemas (Z – Y) y (X U Y); //Donde XY está en 4FN ρ = ρ U Ri(XY); Z = Z - Y; } } ρ= ρ U Z; // fin 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 44 22 29/11/2014 Quinta Forma Normal (5FN) También llamada de Proyección-Unión (PJFN), se puede definir así: Un esquema R está en 5FN respecto de un conjunto F de dependencias (funcionales, multivaluadas y de reunión) si, para cada dependencia de unión NO TRIVIAL DU(R1, R2,..., Rk) en F+, toda Ri es una superclave de R. Ej: Suministros NomProveedor Componente NomProyecto Silva Silva Aldana Velasco Aldana Aldana Silva Perno Tuerca Perno Tuerca Clavo Perno Perno Proy X Proy Y Proy Y Proy Z Proy X Proy X Proy Y Su descomposición a la 5FN será: 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 45 Quinta Forma Normal (5FN) RelacionA RelacionB NomProveedor Componente NomProveedor NomProyecto Silva Silva Aldana Aldana Velasco Perno Tuerca Perno Clavo Tuerca Silva Silva Aldana Aldana Velasco Proy X Proy Y Proy Y Proy X Proy Z RelacionC Componente NomProyecto Perno Tuerca Perno Clavo Tuerca Proy X Proy Y Proy Y Proy X Proy Z 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 46 23 29/11/2014 QUIZ #3 Consideremos una base de datos de viajes por barco con los siguientes atributos: N (nombre del barco), T (tipo de barco), V (identificador del viaje), C (carga llevada por un barco en un viaje), P (puerto) y D (día). Asumimos que un viaje consiste de una secuencia de eventos donde un barco recoge una carga y la entrega en el puerto siguiente. Un barco puede visitar solo un puerto en un día. Se adicionan las siguientes dependencias funcionales: N → T, V → NC y ND → PV. Hallar una descomposición en BCFN que cumpla la propiedad LJ. 29/11/2014 Bases de Datos I - Mauricio E. Fernández N 47 24