2do. Cuatrimestre de 2004 Elementos de Bases de Datos Dpto.Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Lic. María Mercedes Vitturini [mvitturi@cs.uns.edu.ar] Clase 9 1er. Cuatrimestre de 2004 Repaso Definición: se define como F + o clausura de un conjunto de df s F, al conjunto de df s que son lógicamente implicadas por F, F + = {X Y: F = X Y} Definición: sea F un conjunto de df s definido sobre un conjunto de atributos R, y sea X R. Se denomina X + o claususa de X (con respecto a F) al conjunto de atributos A, tal que se puede deducir de F usando los Axiomas de Amstrong. Definición: dos conjuntos de df's F y G definidos sobre un esquema R son equivalentes (F G) si F + =G +. Si F G se dice que F es un cubrimiento para G (y viceversa). Clase 9 2 Algoritmos Vistos Clausura: calcula X + la clausura de X con respecto a un conjunto de df F. Pertenece: dados un cojunto de df F y una dependencia X Y, determina si F = X Y. EsSuperLlave y EsLlave : dados un conjunto de atributos X, un conjunto de df F, determina si X es superllave (o llave) de R. Deduce: dados dos conjuntos de df F y G determina si F = G. Equivalentes: dados dos conjuntos de df F y G determina si F = G. Cubrimientos No Redundantes Definiciones: Un conjunto F de dependencias funcionales es no redundante si no contiene ningún subconjunto propio F' (F' F) tal que F' F. Caso contrario, se dice que F es redundante. F es un cubrimiento no redundante para G si F es un cubrimiento para G y F es no redundante. Clase 9 3 Clase 9 4 Ejemplo Dados G={AB C, A B, B C, A C} F={AB C, A B, B C}. Se puede demostrar que F G, esto es F es un cubrimiento para G (y G es un cubrimiento para F). Sin embargo, F no es un cubrimiento no redundante para G y G no es un cubrimiento no redundante para F. F' = {A B, B C} es un cubrimiento no redundante para G y para F. Cubrimiento No Redundante Dado un conjunto de df F definido sobre R, para obtener F un cubrimiento no redundante de F, se deben quitar de F todas las dependencias funcionales redundantes. Esto es: F = {F {X Y}: X Y es redundante en F} El conjunto de df s F F Ahora bien, para comprobar si una df X Y es redundante en F, podemos verificar si: F {X Y} = X Y Clase 9 5 Clase 9 6 1
2do. Cuatrimestre de 2004 Algoritmo EsRedundante Algoritmo EsRedundante Datos de Salida: Redundante (verdadero si F es redundante, falso en caso contrario). i 0 n Cantidad de df s de F Redundante falso Repetir i i + 1 Sea X Y el i-ésimo elemento de F Redundante Pertenece(F - {X Y}, X Y) Hasta (i = n) o (Redundante) Clase 9 7 Algoritmo NoRedundante Algoritmo NoRedundante Datos de Salida: G, un cubrimiento no redundante de F. H F G Repetir Sea X Y el primer elemento de H H H - { X Y } Si No Pertenece(F - {X Y},X Y) entonces G G {X Y} Sino F F -{X Y} Hasta (H = ) Clase 9 8 Atributos Extraños Si bien un conjunto de df's F puede ser no redundante, puede reducirse aún más el tamaño de F eliminando atributos extraños en las df's. Definición: Sea F un conjunto de df's sobre un esquema R y X Y una df en F. Un atributo A en R es extraño en X Y con respecto a F si: X=AZ, X Z y (F - {X Y}) {Z Y} F, o bien: Y=AW, Y W y (F - {X Y}) {X W} F. Atributos Extraños Ejemplo: Sea F = { A BC, B C, AB D }. C es extraño a derecha en la df A BC: De {A B, B C} = A C por transitividad. De {A B, A C} = A BC por unión. B es extraño a izquierda en la df AB D: De {A B AB D} = A D por pseudotransitiva. Clase 9 9 Clase 9 10 Atributos Extraños Definición: Sean F un conjunto de df's sobre un esquema R y X Y una df en F. X Y está reducido a izquierda si X no contiene atributos extraños en X Y. X Y está reducido a derecha si Y no contiene atributos extraños en X Y. X Y está reducido si está reducido a izquierda y a derecha, y además Y. Definición: Un conjunto F de df's es reducido a izquierda (reducido a derecha, reducido) si cada df en F está reducida a izquierda (reducida a derecha, reducida respectivamente). Clase 9 11 Atributos extraños a izquierda Formalmente, sea F un conjunto de df's definido sobre un esquema R, con X, Y, A R y sea XA Y una df en F. El atributo A es extraño a izquierda en la df XA Y con respecto a F si: F = (F - {XA Y}) {X Y} F Ahora bien, para saber si el atributo A es extraño a izquierda en la df XA Y, podemos comprobar si vale que: F = {X Y} Clase 9 12 2
2do. Cuatrimestre de 2004 Algoritmo ReducirAIzquierda Algoritmo ReducirAIzquierda Datos de Salida: G, un cubrimiento reducido a izquierda de F. G F Para cada df X Y en F hacer Para cada atributo A en X hacer Si Pertenece (G, (X - {A}) Y) entonces Remover A de X en X Y en G Clase 9 13 Atributos extraños a derecha Formalmente, sea F un conjunto de df's definido sobre un esquema R, con X, Y, A R y sea X AY una df en F. El atributo A es extraño a derecha en la df X YA con respecto a F si: F = (F - {X YA}) {X Y} F Ahora bien, para saber si el atributo A es extraño a derecha en la df X YA, podemos comprobar si vale que: F - {X YA} {X Y} = X YA ó F - {X YA} {X Y} = X A Clase 9 14 Algoritmo ReducirADerecha Algoritmo ReducirADerecha Datos de Salida: G, un cubrimiento reducido a derecha de F. G F Para cada df X Y en F hacer Para cada atributo A en Y hacer Si Pertenece (G - {X Y} {X {Y-A}}, X A) entonces Remover A de Y en X Y en G Atención Tener presente que cuando se aplica cualquiera de los algoritmos de reducción (NoRedundante, ReducirAIzquierda o ReducirADerecha) si una dependencia o atributo es redundante, por lo tanto es posible quitarlo de F, en las próximas iteraciones del algoritmo se trabajará con un nuevo conjunto de df s F sin el atributo o dependencia en cuestión Clase 9 15 Clase 9 16 Reducción de un conjunto de df's Ejemplo 1: F = {A BC, B C, AB D} G1 = ReducirAIzquierda(F) es igual a: {A BC, B C, A D} G2 = ReducirADerecha(F) es igual a: {A B, B C, AB D} Sin embargo, G2 no está reducido a izquierda. G3 = {A B, B C, A D} está reducido a izquierda y a derecha. Por lo tanto es reducido. Clase 9 17 Reducción de un conjunto de df's Ejemplo 2: F = { A C, AB DE, AB CDI, AC J }. G1 = ReducirAIzquierda(F). G1 = { A C, AB DE, AB CDI, A J }. G2 = ReducirADerecha(G1). G2 = { A C, AB E, AB DI, A J }. G2 es un cubrimiento reducido de F. Hay un cubrimiento mejor? Es posible. Clase 9 18 3
2do. Cuatrimestre de 2004 Reducción de un conjunto de df's Ejemplo 3: F = { A BC, B C, AB CDI, AC J }. G1 = ReducirAIzquierda(F). G1 = { A BC, B C, A CDI, A J }. G2 = ReducirADerecha(G1). G2 = { A B, B C, A DI, A J }. G2 es un cubrimiento reducido de F. Hay un cubrimiento mejor? Es posible. Sobre redundantes y reducidos Un conjunto reducido (a derecha e izquierda) puede ser redundante. Reducir a izquierda primero y a derecha después puede producir un conjunto de df s diferente al conjunto resultante de reducir primero a derecha y luego a izquierda. El orden correcto es reducir primero a derecha y después a izquierda. Clase 9 19 Clase 9 20 Cubrimientos para DF s Por qué buscamos cubrimientos mejores o más pequeños? Para reducir el tiempo requerido para testear si una base de datos satisface las restricciones. Para reducir el tiempo requerido para ejecutar el Algoritmo Clausura. Hasta ahora que mejoras planteamos: Eliminar df s redundantes. Eliminar atributos extraños a izquierda y derecha. Definición: Un conjunto de df s F es no redundante si no existe ningún subconjunto propio F de F equivalente a F, esto es, no existe F tal que F F y F F. Definición: Un conjunto de df s F es mínimo si no existe un conjunto de df s G equivalente a F con menos df s, esto es, no existe G tal que G < F y G F. Definición: Un conjunto de df s F es óptimo si es mínimo y no existe un conjunto de df s G equivalente a F de un tamaño menor (el tamaño es la suma de los atributos que aparecen a izquierda y derecha de cada df). Clase 9 21 Clase 9 22 Lema: Sea F = { X Y 1,, X Y n } un conjunto de df s con el mismo lado izquierdo en cada df. Entonces F es equivalente a G = {X Y 1...Y n }. Cualquier conjunto mínimo de df s F contiene muchas df s con lados izquierdos diferentes. Además, si un conjunto F es mínimo entonces el conjunto { X X + : X Y F } también es mínimo. A partir de ahora, cuando hablemos de cubrimientos mínimos, asumiremos que todas las dependencias son de la forma X X +. Un cubrimiento con este tipo de dependencias se dice que es cerrado en atributos. Clase 9 23 Definición: Dado un conjunto de df s F, se dice que X es más débil que Y si X + Y +. Definición: Decimos que H es una derivación no redundante de X Y si H = X Y y no existe H H tal que H = X Y. Lema: Si Y W es usado en una derivación no redundante de X V a partir de F entonces Y + X +. Lema: Si F y G son equivalentes y no redundantes, entonces para cada df X V en F existe una df Y W en G tal que X e Y son equivalentes ( X + = Y + ). Clase 9 24 4
2do. Cuatrimestre de 2004 Definición: Dado un conjunto de df s F y dos conjuntos de atributos X e Y, se dice X determina directamente a Y, notado por X * F Y si X Y es derivable a partir de un subconjunto de F que contiene sólo df s con su lado izquierdo más débil que X. Lema: Si X * F Y entonces X * G Y para cada cubrimiento G equivalente a F. Esto es, la determinación directa, no depende del cubrimiento elegido para F. Clase 9 25 Lema: Si F y G son cerrados en atributos, no redundantes y equivalentes, entonces para cada df X X + en F existe una df Y Y + en G tal que X + =Y + y X * Y. Lema: Un conjunto de df s F cerrado en atributos es mínimo si y solo si no existen dos pares de lados izquierdos X 1 y X 2 tales que X 1 X 2, X 1+ =X 2+ y X 1 * X 2. Teorema: Un conjunto de df s F cerrado en atributos es mínimo si y solo si es no redundante. Clase 9 26 Resumen sobre cubrimientos mínimos Para calcular cubrimientos mínimos, vamos a partir de cubrimientos cerrados en atributos, ya que si un conjunto F es mínimo entonces el conjunto { X X + : X Y F } también es mínimo. De acuerdo al último teorema, un conjunto de df s F cerrado en atributos es mínimo si y solo si es no redundante. Clase 9 27 Algoritmo Cubrimiento Mínimo Algoritmo CubrimientoMinimo Datos de Salida: G, un cubrimiento mínimo de F. G { X X + : X Y F } Repetir H G Si existe X X + redundante en G entonces G G - { X X + } Hasta H = G Clase 9 28 Consideremos R = (ACDELMNPS) y el siguiente conjunto F de df's: F= { E NS, NL EMD, EN LCD, C S } { D M, M D, EPD AE, NLCP A } Supongamos que se aplica el primer paso del algoritmo CubrimientoMínimo. Esto es, debemos obtener df's cerradas en atributos de la forma X X +. Clase 9 29 Las nuevas df's son: E + ENSLCDM = E CDELMNS NL + NLEMDCS = LN CDELMNS EN + ENSLCDM = EN CDELMNS C + CS D + DM M + MD = M DM (B) (A) EPD + EPDNSMALC = DEP ACDELMNPS NLCP + NLCPEMDSA = CLNP ACDELMNPS Las dependencias en (A), (B) y (C) son funcionalmente equivalentes (comparten el mismo lado derecho respectivamente). (C) Clase 9 30 5
2do. Cuatrimestre de 2004 Luego G cerr_atrib = {E CDELMNS, LN CDELMNS, EN CDELMNS, C CS, D DM, M DM, DEP ACDELMNPS, CLNP ACDELMNPS} Analicemos las df s redundantes: E CDELMNS EN CDELMNS Claramente, la df EN CDELMNS se deduce de la df E CDELMNS (aplicando la regla de aumento). Por lo tanto, eliminamos la que tiene más atributos a izquierda. Clase 9 31 Sigamos analizando las df s redundantes: DEP ACDELMNPS CLNP ACDELMNPS. Por qué?. LN y E son funcionalmente equivalentes y con ambas se determina funcionalmente C y D. P está en ambas dependencias funcionales. Hay que elegir preservar una. Elegimos DEP ACDELMNPS pues tiene menos atributos. G Min = { E CDELMNS, LN CDELMNS, C CS, D DM, M DM, DEP ACDELMNPS } Clase 9 32 Algoritmo MínimoReducido Algoritmo MínimoReducido Datos de Salida: G, un cubrimiento mínimo reducido de F. G CubrimientoMínimo(F) G ReducirAIzquierda(G) G ReducirADerecha(G) Clase 9 33 Consideremos el siguiente conjunto de df's: G 0 = { E NS, NL EMD, EN LCD, C S, D M, M D, EPD AE, NLCP A } Cubrimiento Mínimo de G 0 : G 1 = { E CDELMNS, LN CDELMNS, C CS, D DM, M DM, DEP ACDELMNPS } Reducir a Izquierda G 1 : G 2 = { E CDELMNS, LN CDELMNS, C CS, D DM, M DM, EP ACDELMNPS } Reducir a Derecha G 2 (Cubrimiento Mínimo Reducido): G 3 = { E CDLN, LN E, C S, D M, M D, EP A } Clase 9 34 Ejemplo B Consideremos R = (ABCDE) y el siguiente conjunto df's: G 0 = { A C, B C, C D, DE C, CE A, CD A } Debemos obtener df's cerradas en atributos: {A ACD,B ABCD,C ACD,DE ACDE,CE ACDE,CD ACD} Debemos eliminar las dependencias redundantes: G 1 = { A ACD, B ABCD, C ACD, DE ACDE } CE ACDE se elimina pues { C ACD } = CE ACDE. CD ACD se elimina pues { C ACD } = CD ACD. En ambos casos, se aplica la regla de aumento. Ejemplo B Consideremos R = (ABCDE) y el siguiente conjunto df's: G 0 = { A C, B C, C D, DE C, CE A, CD A } El cubrimiento mínimo es: G 1 = { A ACD, B ABCD, C ACD, DE ACDE } G 2 = ReducirAIzquierda(G 1 ). G 2 = { A ACD, B ABCD, C ACD, DE ACDE } G 3 = ReducirADerecha(G 2 ). G 3 = { A CD, B A, C A, DE A } G 3 es el Cubrimiento Mínimo Reducido de G 0. Clase 9 35 Clase 9 36 6
2do. Cuatrimestre de 2004 Ejemplo C Consideremos R=(ABCDEFG) y el siguiente conjunto df's: G 0 = {A BC, AD F, BC D, BG A, DE C, DG E} Debemos obtener df's cerradas en atributos (X X + ): G 1 = { A ABCDF, AD ABCDF, BC BCD } { BG ABCDEFG, DE CDE, DG CDEG} Debemos eliminar dependencias redundantes de G 1 : G 2 ={A ABCDF,BC BCD,BG ABCDEFG,DE CDE,DG CDEG} Debemos reducir a izquierda G 2 : G 3 ={A ABCDF,BC BCD,BG ABCDEFG,DE CDE,DG CDEG} Debemos reducir a derecha G 3 : G 4 = {DE C,BC D,DG E,BG A,A BCF} G 4 es el Cubrimiento Mínimo Reducido para G 0. Clase 9 37 Ejercicios Para cada uno de los siguientes conjuntos de df s: F = { E G, BGE DH, AB B, G DE }. F = { EA GH, BGE DH, A B, G DE }. F = { A BC, DB AEH, AB DHI, I C, H E, E H, AJH AK, BDIJ K }. hallar lo siguientes cubrimientos equivalentes: a) Cerrado en Atributos. b) Mínimo. c) Mínimo Reducido. Clase 9 38 Temas de la Clase de hoy Cubrimientos de df s. Cubrimiento no redundante y su algoritmo. Atributos extraños a izquierda y derecha. Cubriento no redundante reducido y su algoritmo. Cubrimiento mínimo, teoría y su algoritmo. Cubrimiento mínimo reducido y su algoritmo. Ejemplos Bibliografía: Fotocopias Dependency Theory. Principles of Database and Knowledge Based Systems. Jeffrey Ullman. Capítulo 7 The Theory of Relational Databases. David Maier. Computer Science Press. Capítulo 3. Clase 9 39 7