FRAGMENTACION Fragmentación Fragmentación es la descomposición o partición de una tabla en pedazos llamados fragmentos. La fragmentación básicamente se puede hacer de dos formas: + Fragmentación Horizontal. selecciona registros completos de una relación + Fragmentación Vertical. selecciona columnas completas de una relación Reglas a Cumplir por Fragmentación Condición de Completes. Todos los datos de la relación global deberán ser mapeados a algún fragmento. Condición de Reconstrucción. Deberá ser siempre posible reconstruir la relación global a partir de sus fragmentos. Condición de Conjuntos Disjuntos. Es conveniente que los fragmentos sean disjuntos. Fragmentación Horizontal Definir fragmentos horizontales se hace a través del operador de selección del algebra relacional operando sobre una relación global. S Ejemplo: SNUM NOMBRE CD S1 S2 S3 S4 S5 X Y Z A B L L P P L FH1 FH1= S WHERE CD=‘L’ FH2= S WHERE CD=‘P’ FH2 SNUM NOMBRE CD S1 S2 S5 Una posible fragmentación Horizontal de esta tabla sería la sig: X Y B L L L SNUM NOMBRE CD S3 S4 Z A P P Fragmentación Horizontal Los predicados que nos permiten definir una fragmentación de una relación son llamados la calificación de la fragmentación. En el ejemplo la calificación de la fragmetación hecha a S, son: q1 : CD = ‘L’ q2 : CD = ‘P’ En general una fragmentación horizontal es correcta, si cumple que: El conjunto de calificaciones mapea todo el dominio del atributo(s) bajo el cual se hace la calificación. Fragmentación Horizontal Si siempre es posible reconstruir la tabla global por medio del operador UNION del algebra relaciónal: R = F1 UNION F2 UNION …UNION Fn Si todas las calificaciones de los fragmentos son mutuamente exclusivas, es decir, si al aplicar las calificaciones se producen fragmentos que al intersectarlos generan un conjunto vacio. Φ = F1 INTERSECT F2 INTERSECT .. INTESECT Fn Fragmentación Horizontal Derivada Este tipo de fragmentación particiona una tabla en base a un atributo(s) que esta presente en otra tabla(s). Ejemplo: SP S# P# DEPT# CANT Fragmentar a SP de acuerdo a la ciudad del provedor. Pero ciudad no esta en SP, como le hacemos ? Debemos hacer un JOIN de SP y S y proceder a realizar la fragmentación horizontal. Fragmentación Horizontal Derivada Los fragmentos se definirian de la sig. manera: FDH1 = ((S JOIN SP) Where Cd = ‘L’)[SP.*] FDH2 = ((S JOIN SP) Where Cd = ‘P’)[SP.*] FDH1 S SP S# S# P# DEPT# CANT S1 S2 S3 S4 S5 S1 S1 S2 S2 S3 S4 S4 S4 P1 P3 P1 P2 P3 P4 P5 P6 D1 D1 D2 D2 D1 D2 D3 D1 100 100 50 200 100 50 100 50 S# P# DEPT# CANT NOMBRE CD X Y Z A B L L P P L S1 S1 S2 S2 P1 P3 P1 P2 D1 D1 D2 D2 100 100 50 200 S# P# DEPT# CANT FDH2 S3 S4 S4 S4 P3 P4 P5 P6 D1 D2 D3 D1 100 50 100 50 Fragmentación Vertical Definir fragmentos verticales se hace a través del operador de proyección del algebra relacional operando sobre una relación global. Ejemplo: E EMP# NOMBRE SALARIO IMPTO. #JEFE DEPT# e1 e2 e3 e4 e5 X Y Z A B 1000 1500 500 4000 2000 100 300 20 1000 350 J1 J1 J2 J3 J2 D1 D1 D2 D3 D2 EMP# NOMBRE. #JEFE DEPT# EMP# SALARIO IMPTO e1 e2 e3 e4 e5 D1 D1 D2 D3 D2 e1 e2 e3 e4 e5 X Y Z A B J1 J1 J2 J3 J2 1000 1500 500 4000 2000 100 300 20 1000 350 Fragmentación Vertical Una característica importante de la fragmentación vertical, es que todos los fragmentos deben incluir la llave primaria de la relación global. La razón es que si no incluímos la llave primaria no es posible reconstruir la relación original. Para reconstruir la relación original debemos realizar un JOIN de todos los fragmentos. R = F1 JOIN F2 JOIN … JOIN F3 En fragmentación vertical no se cumple que los fragmentos sean disjuntos (la llave está repetida en todos los fragmentos). Fragmentación Híbrida Consiste en aplicar las operaciones de fragmentación vistas anteriormente de manera recursiva, satisfaciendo las condiciones de correctés cada vez que se realiza la fragmentación. La reconstrucción puede ser obtenida aplicando las reglas de reconstrucción en orden inverso. De esta forma podemos fragmentar nuestra tabla global en los pedazos que queramos y como queramos. Fragmentación Híbrida Ejemplo: Considere la relación de empleado (E). Una posible fragmentación híbrida sería: E1 = Ex[Emp#, Nombre, #Jefe,Dept#] Where Dept# <10 E2 = Ex[Emp#, Nombre, #Jefe,Dept#] Where Dept# >=10 And Dept# <=20 E3 = Ex[Emp#, Nombre, #Jefe,Dept#] Where Dept# >20 E4 = E[Emp#, Salario, Impto]