Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Formas Normales Elementos de Bases de Datos Una forma normal es una restricción sobre un esquema de base de datos que, presumiblemente, previene ciertas propiedades indeseables. Dpto.Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Estudiaremos las siguientes formas normales: Lic. María Mercedes Vitturini [mvitturi@cs.uns.edu.ar] Clase 11 1er. Cuatrimestre de 2004 Primera Forma Normal: 1FN. Segunda Forma Normal: 2FN. Tercera Forma Normal: 3FN. Forma Normal de Boyce-Codd: FNBC. Elementos de Bases de Datos Clase 11 Descomposición de Relaciones Si bien un esquema de relación R puede no satisfacer cierta forma normal, es posible obtener una descomposición ρ=(R1,…,Rk) tal que cada esquema Ri la satisface. Esto es, los valores de los dominios no son valores compuestos (conjuntos, listas, etc). Ventajas de la 1FN: Sería deseable que la descomposición hallada preserve dependencias y sea join sin pérdida. Además de respetar una forma normal alta. Representación Tabular. Lenguajes de Consulta más simples. Definición de Restricciones de Integridad más simples. 3 4 Definiciones previas: El esquema: Personas (DNI, Apellido, Nombres, Domicilio {Hobby}) El grupo que se repite de hobby no respeta la 1FN. El esquema: Elementos de Bases de Datos Clase 11 Segunda Forma Normal Ejemplos Primera Forma Normal Definición: Un esquema de relación R está en primera forma normal (1FN) si los valores en dom(A) son atómicos para cada atributo A en R. Definición: Una descomposición ρ=(R1,…,Rk) satisface una forma normal determinada si cada Ri satisface esa forma normal. Elementos de Bases de Datos Clase 11 2 Artículos (código, nombre, descripción) Con código de la forma ddcccc, donde dd representa el departamento que lo comercializa y cccc el número interno de artículo, no respeta la 1FN. Elementos de Bases de Datos Clase 11 5 Definición: Dados un conjunto de df's F y una df X→Y en F+, se dice que Y es parcialmente dependiente de X si en F X→Y no está reducido a izquierda, esto es Y dependede de un subconjunto de los atributos de X. Si X→Y está reducido a izquierda entonces Y es totalmente dependiente de X. Definición: Dado un esquema de relación R, un atributo A en R y un conjunto de df's F, un atributo A es primo en R con respecto a F si A es parte de alguna llave de R. De lo contrario, se dice que A es no primo. Elementos de Bases de Datos Clase 11 6 1 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Segunda Forma Normal Ejemplo de 2FN Definición 1: Un esquema de relación R está en Consideremos los siguientes atributos: segunda forma normal (2FN) con respecto a un Viajes (vuelo, día, piloto, puertaEmb) conjunto de df's F si está en 1FN y cada atributo no primo es totalmente dependiente de cada llave en R. El esquema R=(DGPV) tiene como df's a: F = { VD → PG, V → G } La llave de este esquema es VD. V y D son atributos primos, P y G son no primos. El esquema no está en 2FN porque G (atributo no primo) es parcialmente dependiente de VD (que es llave de la relación). Definición 2: Un esquema de relación R está en segunda forma normal (2FN) con respecto a un conjunto de df's F si para cada df X → A (A ∉ X) en F se verifica que: X no es un subconjunto propio de una llave, o bien: A es primo. Elementos de Bases de Datos Clase 11 O en forma reducida Viajes(VDPG) Elementos de Bases de Datos Clase 11 7 Ejem plo Ejemplo de 2FN 8 Vuelo Dia Piloto Puerta de Embarque 112 01/09/2004 Díaz Joaquin 1 112 10/09/2004 Peralta Mario 1 125 05/09/2004 Torres Manuel 2 125 10/092004 Marini Matias 2 132 11/09/2004 Peralta Mario 1 146 04/09/2004 Marini Matias 3 146 12/09/2004 Díaz Joaquin 3 Para el ejemplo anterior con el esquema R=(DGPV) y las mismas df's: F = {VD→PG, V→G} Sea la descomposición: ρ=(R1,R2)=(VDP,VG) con las df's {VD→P} y {V→G} respectivamente. Esquema R1=(VDP), llave VD, P es atributo no primo y se satisface la 2FN. Esquema R2=(VG) llave V, G es atributo no primo y se satisface la 2FN. Como cada subesquema satisface la 2FN, la descomposición ρ satisface la 2FN. Además esta descomposición tiene las propiedades jsp y pd. Elementos de Bases de Datos Clase 11 Piloto 01/09/2004 Díaz Joaquin Vuelo Puerta de Embarque 112 10/09/2004 Peralta Mario 112 1 125 05/09/2004 Torres Manuel 125 2 125 10/092004 Marini Matias 132 11/09/2004 Peralta Mario 132 1 146 04/09/2004 Marini Matias 146 3 146 12/09/2004 Díaz Joaquin Elementos de Bases de Datos Clase 11 Ejemplo: R=(Vuelo, Día, Id-Piloto, Nombre_Piloto) y el conjunto F={Vuelo Día → Id-Piloto Nombre_Piloto, IdPiloto → Nombre_Piloto}. El atributo Nombre_Piloto es transitivamente dependiente de Vuelo Día pues: Vuelo Día → Id-Piloto (pero no Id-Piloto → Vuelo Día) Id-Piloto → Nombre. Definición 1: Un esquema de relación R está en tercera forma normal (3FN) con respecto a un conjunto de df's F si está en 1FN y cada atributo no primo no es transitivamente dependiente de una superllave de R. Definición 2: Un esquema de relación R está en tercera forma normal (3FN) si para cada dependencia funcional X → A (A ∉ X) en F se verifica que: Elementos de Bases de Datos Clase 11 10 Tercera Forma Normal Definición: Dado un esquema de relación R, un subconjunto X de R, un atributo A en R y un conjunto de df's F, se dice que A es transitivamente dependiente de X si existe un subconjunto Y de R tal que X→Y, no es el caso que Y→X, e Y→A está en F pero A no está en XY. Dia 112 9 Dependencia Transitiva Vuelo 11 X es superllave, o bien: A es primo. Elementos de Bases de Datos Clase 11 12 2 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Algoritmo Descomposición3FNpd Ejemplo de 3FN Dado un esquema con los atributos V: Vuelo, D: Día, I: IdPiloto, N: Nombre El esquema R=(DINV) tiene como df's a: F = {VD → IN, I → N} La llave es VD con V, D atributos primos y I, N son no primos. El esquema R no está en 3FN. ρ = (R1,R2) = (VDI,NI) con las df’s {VD → I} y {I → N} respectivamente satisface la 3FN. Además tiene las propiedades de jsp y pd. Algoritmo Descomposición3FNpd Datos de Entrada: un esquema R y un conjunto de df’s F. Datos de Salida: una descomposición S en 3FN que pd. Comienzo del Algoritmo G ← CubrimientoMínimoReducido(F). Abrir a derecha las df's de G. Si existen atributos en R no involucrados en ninguna df de G, tanto a izquierda y a derecha entonces esos atributos pueden formar un esquema y ser eliminados de R. Si una de las df's de G involucra todos los atributos de R Entonces S ← R. Sino S consiste de los esquemas XA para cada X → A en G. Fin del Algoritmo Elementos de Bases de Datos Clase 11 (CTHRSG) Consideremos los atributos C: Curso, T: Profesor, H: Hora, R: Aula, S: Estudiante, G: Grado y las df’s: • • • • 14 Ejemplo 3FN y PD Ejemplo • Elementos de Bases de Datos Clase 11 13 C→T: Cada curso tiene un profesor. HR→C: Solo un curso puede estar en un aula en un momento. HT→R: Un profesor puede estar en un aula en un momento. CS→G: Cada estudiante tiene un grado en cada curso. HS→R: Un estudiante puede estar en un sólo aula en un momento. El esquema completo es (CGHRST). Elementos de Bases de Datos Clase 11 C→T, HR→C, HT→R, CS→G, HS→R (CT) C→T HR→C (THR) (CSG) HT→R HS→R CS→G ¿Es JSP? Podemos usar el algoritmo de la tabla. Elementos de Bases de Datos Clase 11 15 Ejemplo 3FN y PD (HRS) (CHR) 16 Ejemplo 3FN y PD CT CHR THR C a1 a1 b31 T a2 b22 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CT CHR THR C a1 a1 b31 T a2 a2 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CSG HRS a1 b51 b42 b52 b43 a3 b44 a4 a5 a5 a6 b56 CSG HRS a1 b51 a2 b52 b43 a3 b44 a4 a5 a5 a6 b56 CT CHR THR C a1 a1 b31 T a2 a2 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CT CHR THR C a1 a1 a1 T a2 a2 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CSG HRS a1 b51 a2 b52 b43 a3 b44 a4 a5 a5 a6 b56 CSG HRS a1 a1 a2 b52 b43 a3 b44 a4 a5 a5 a6 b56 Elementos de Bases de Datos Clase 11 C→T 17 Elementos de Bases de Datos Clase 11 HR→C 18 3 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Ejemplo 3FN y PD Ejemplo 3FN y PD CT CHR THR C a1 a1 a1 T a2 a2 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CT CHR THR C a1 a1 a1 T a2 a2 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CSG HRS a1 a1 a2 b52 b43 a3 b44 a4 a5 a5 a6 b56 CSG HRS a1 a1 a2 a2 b43 a3 b44 a4 a5 a5 a6 b56 CT CHR THR C a1 a1 a1 T a2 a2 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CT CHR THR C a1 a1 a1 T a2 a2 a2 H b13 a3 a3 R b14 a4 a4 S b15 b25 b35 G b16 b26 b36 CSG HRS a1 a1 a2 a2 b43 a3 b44 a4 a5 a5 a6 b56 CSG HRS a1 a1 a2 a2 b43 a3 b44 a4 a5 a5 a6 a6 C→T Elementos de Bases de Datos Clase 11 Algoritmo Descomposición3FNpdjsp Teorema 2: Sea ρ una descomposición de R en 3FN obtenida con el algoritmo Descomposición3FNpd y sea X una llave de R. Entonces σ = ρ ∪ {X} es una desconposición de R en 3FN que es jsp y pd. Nota: Si partimos de un esquema de n df's, la relación puede tener a lo sumo n subesquemas ya que ciertas df's pueden caer en un mismo esquema. Por ejemplo: A→B y B→A estarían en un mismo esquema AB. Elementos de Bases de Datos Clase 11 Datos de Entrada: un esquema R y un conjunto de df’s F. Datos de Salida: una descomposición G en 3FN, jsp y pd. Comienzo del Algoritmo G ← Descomposición3FNpd(R,F). Si G no contiene algún subesquema con una llave de R Entonces Sea X una llave de R. G ← G ∪ { X }. Fin del Algoritmo Elementos de Bases de Datos Clase 11 21 Ejemplo 3FN, JSP y PD (CTHRSG) C→T, HR→C, HT→R, CS→G, HS→R (HS) C→T ∅ HT→R Tenemos que HS es llave (pues HS+=HSRCTG=R). (CSG) CS→G (CT) (HRS) (CHR) HS→R HR→C HS ⊆ HRS Descomposición en 3FN, JSP y PD. Elementos de Bases de Datos Clase 11 C→T, HR→C, HT→R, CS→G, HS→R C→T (HRS) (THR) 22 Ejemplo 3FN, JSP y PD (CTHRSG) HR→C 20 Algoritmo Descomposición3FNpdjsp Teorema 1: El algoritmo Descomposición3FNpd encuentra una descomposición en 3FN que preserva dependencias. (CHR) JSP Elementos de Bases de Datos Clase 11 19 Descomposiciones 3FN y JSP (CT) CS→G 23 (THR) HT→R (CSG) HS→R CS→G Descomposición en 3FN, JSP y PD. Elementos de Bases de Datos Clase 11 24 4 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Algoritmo DescomposiciónFNBCjsp Forma Normal de Boyce-Codd Definición 1: Un esquema de relación R está en forma normal de Boyce-Codd (FNBC) con respecto a un conjunto de df's F si para cada dependencia funcional X→A (A∉X) en F vale se verifica que X es superllave (llave para conjuntos mínimos reducidos). Definición 2: Un esquema de relación R está en forma normal de Boyce-Codd (FNBC) con respecto a un conjunto de df's F si para cada subconjunto Y de R y cada atributo A en R-Y, si Y→A entonces Y→R en F. Esto es, si Y determina no trivialmente cualquier atributo de R entonces Y es superllave de R. Lema: Cualquier esquema de relación R que está en FNBC con respecto a F está en 3FN con respecto a F. Elementos de Bases de Datos Clase 11 25 Ejemplo 1 de FNBC y JSP (a) Llave: C (CTHRSG) C→T, HR→C, HT→R, CS→G, HS→R (CT) C→T Llave: CS Llave: HS (CSG) CS→G (CHRS) HR→C, HS→R, HC→R Llaves: HR,HC ¡Perdimos HS → R! (HCR) HC→R, HR→C 26 Llave: HS La descomposición obtenida en el ejemplo anterior es: ρ=(CT, CSG, HCR, HSC) Esta descomposición es FNBC y JSP por construcción. Esto es, lo garantiza el algoritmo. En principio, no podemos asegurar si tiene la propiedad de preservar dependencias. Dos mecanismos para verificarlo: (CHS) HS→C Elementos de Bases de Datos Clase 11 Llave: HS Verificar si la unión de las dependencias profectadas determina el conjunto F. Usar el algoritmo Clausura para comprobar la propiedad pd. Elementos de Bases de Datos Clase 11 27 28 Ejemplo 2 de FNBC y JSP Ejemplo 2 de FNBC y JSP Consideremos los atributos: E: Estudiante, M: Materia, P: Profesor Sea R=(EMP) y las df's {EM→P, P→M}. Este esquema tiene dos llaves: EM y EP. Todos los atributos de la relación son primos. Por lo tanto, la relación está en 3FN pero no en FNBC. La descomposición (EP,PM) resuelve el problema ya que el esquema satisface la FNBC. Sin embargo, claramente no preserva dependencias (perdimos EM → P). Elementos de Bases de Datos Clase 11 Clase 11 Ejemplo JSP FNBC Llave: HS (CHRSG) HR→C, CS→G, HS→R, HC→R Algoritmo DescomposiciónFNBCjsp Datos de Entrada: un esquema R y un conjunto de df’s F. Datos de Salida: una descomposición en FNBC jsp. Comienzo del Algoritmo G ← CubrimientoMinimoReducido(F). Abrir a derecha las df's de G. Z toma el valor del esquema original R. Repetir mientras Z no está en FNBC: Se intenta descomponer Z en dos esquemas XA y Z\A tal que XA está en FNBC (no en el esquema general) y vale X→A. Se agrega XA a la descomposición. Z toma el valor Z \ A. Se considera al Z final una descomposición más. Fin del Algoritmo Elementos de Bases de Datos 29 Llaves: EM, EP Llave: P EMP {EM → P, P → M} PM {P→M} Elementos de Bases de Datos Clase 11 EP {} Llave: EP 30 5 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 ¡Cuidado con las descomposiciones! Uno debe recordar que la descomposición es la última opción que debemos optar para resolver problemas de anomalías o redundancia. Por caso, si un esquema está en FNBC no debemos descomponerlo aunque obtengamos una descomposición FNBC, jsp y pd. Ejemplo: I: Id-Empleado, N: Nombre, S: Salario, D: Departamento. Sabemos que I → NSD y este esquema ya está en FNBC. No debemos descomponerlo en (IN, IS, ID) con las df's {I→N}, {I→S}, {I→D} respectivamente. Elementos de Bases de Datos Clase 11 EJ → ABCDEHIJKL es redundante pues tenemos la df E → ABCDEHIJKL. CHJK → ABCDEHIJKL es redundante pues tenemos la df HJ→ABCDEHIJKL. DEK → ABCDEHIJKL es redundante pues tenemos la df E → ABCDEHIJKL. Luego, el conjunto cerrado en atributos no redundante es: F2 = { E → ABCDEHIJKL, HJ → ABCDEHIJKL } ∪ { C → BC, DElementos → DI, I →de DI, de Bases Datos AD → ADIL } Clase 11 33 F1 = { E → ABCDEHIJKL, HJ → ABCDEHIJKL } ∪ { EJ → ABCDEHIJKL, C → BC, D → DI, I → DI } ∪ { DEK → ABCDEHIJKL, CHJK → ABCDEHIJKL, AD → ADIL } Elementos de Bases de Datos Clase 11 32 Ahora debemos eliminar atributos extraños a izquierda del conjunto de df’s F2. El conjunto F2 ya está reducido a izquierda. Por lo tanto, debemos reducirlo a derecha: I→ID ⇒Trivial I→D. D→ID ⇒Trivial D→I. • C→BC ⇒Trivial C→B. • AD→ADIL ⇒Trivial AD→IL ⇒D equivalente a I AD→L. • E→ABCDEHIJKL ⇒Trivial E→ABCDHIJKL ⇒D equivalente a I E→ABCDHJKL ⇒C determina a B E→ACDHJKL ⇒AD determina a L E→ACDHJK ⇒HJ determina a ACDK E→HJ. • HJ→ABCDEHIJKL ⇒Trivial HJ→ABCDEIKL ⇒C determina a B HJ→ACDEIKL ⇒D determina a I HJ→ACDEKL ⇒AD determina a L HJ→ACDEK. • • El conjunto reducido a derecha es: F3 = { I → D, D → I, C → B, AD → L, E → HJ, HJ → ACDEK } Elementos de Bases de Datos Clase 11 34 Ejemplo Completo Ejemplo Completo El conjunto mínimo reducido de df’s es: F3 = { I → D, D → I, C → B, AD → L, E → HJ, HJ → ACDEK } ¿Cuáles son las llaves de esta relación? Atributos que serán parte de la llave: Siempre: ninguno. Nunca: B, L, K. Tal vez: A, C, D, E, H, I, J. Debemos probar con todas las combinaciones de los atributos “Tal vez” (hasta 27 = 128). Primero probamos con llaves de un atributo, luego con llaves de dos atributos, hasta (difícilmente sea necesario) probar con llaves de 7 atributos. En este caso las llaves son E y HJ. Elementos de Bases de Datos Clase 11 Sea R=(ABCDEHIJKL) y F el siguiente conjunto de df’s: F0 = { E → JK, HJ → DEI, EJ → CDH, C → B, D → I } ∪ { I → D, DEK → AE, CHJK → A, DA → L } Conjunto cerrado en atributos: Ejemplo Completo Ahora debemos eliminar df’s redundantes del conjunto cerrado en atributos (F1). Consideraremos un ejemplo completo en el cual daremos un conjunto de df’s, obtendremos un cubrimiento mínimo reducido y luego esquemas en 3FN y FNBC. 31 Ejemplo Completo Ejemplo Completo 35 El conjunto mínimo reducido de df’s es: F3 = { I → D, D → I, C → B, AD → L, E → HJ, HJ → ACDEK } Las llaves de la relación son E y HJ. Ahora debemos abrir a derecha las df’s para hallar los respectivos esquemas en 3FN y FNBC. F4 = { I → D, D → I, C → B, AD → L, E → H, E → J } ∪ { HJ → A, HJ → C, HJ → D, HJ → E, HJ → K } Para hallar una descomposición en 3FN y PD, tomamos un esquema por cada dependencia (podrían caer más de una df por esquema). Luego, para que sea JSP debemos asegurar que algún esquema contenga una llave de R. Elementos de Bases de Datos Clase 11 36 6 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Ejemplo FNBC y JSP Ejemplo 3FN, JSP y PD (ABCDEHIJKL) – {E,HJ} (ABCDEHIJK) – Llaves E y HJ I → D, D → I, C → B, AD → L, E → H, E → J, HJ → A, I → D, D → I, C → B, AD → L, E → H, E → J, HJ → C, HJ → D, HJ → E, HJ → K HJ → A, HJ → C, HJ → D, HJ → E, HJ → K Las df’s subrayadas fueron introducidas (con cambios) en cada nuevo subesquema. (ABCEHIJKL) – {E,HJ} (ID) – {D,I} I→D, D→I (DI) I→D, D→I (CB) C→B (AD) AD→L (HJK) HJ→K (HJC) HJ→C (HJA) HJ→A (HJD) HJ→D Verificar si esta descomposición preserva dependencias. 37 Permite eliminar el mayor número de redundancias posibles. Es posible alcanzar una descomposición JSP. No siempre se logra preservar dependencias. − Permite alcanzar una descomposición JSP. Se logra preservar dependencias. Pueden existir dependencias transitivas de atributos primos. 38 Existen dos o más llaves candidatas, o bien: Las llaves candidatas son compuestas, o bien: Las llaves candidatas son solapadas (esto es, tienen al menos un atributo en común). El problema es que FNBC puede no preservar dependencias. FNBC, JSP y PD (aquí está el problema), podemos aceptar una descomposición en 3FN, JSP y PD. Elementos de Bases de Datos Clase 11 39 Resultados importantes 40 Temas de la Clase de Hoy Proposición 1: Si R está en 3FN con respecto a F y todas las llaves de R son simples (consisten de un único atributo) entonces R está en FNBC con respecto a F. Formas Normales: 1FN, 2FN, 3FN y FNBC. Descomposiciones Proposición 2: Si R está en 3FN con respecto a F y tiene una única llave entonces R está en FNBC con respecto a F. Proposición 3: Si R1 y R2 con df’s F1 y F2 respectivamente están en FNBC y tienen una llave en común, entonces R1 ∪ R2 con df’s F1 ∪ F2 está en FNBC. Elementos de Bases de Datos Clase 11 HJ → E, HJ → I, HJ → K Elementos de Bases de Datos Clase 11 En aquellos casos en los que no sucede esto, la 3FN y la FNBC son equivalentes. • Cuando no podemos alcanzar una descomposición en Elementos de Bases de Datos Clase 11 (ACEHIJK) – {E,HJ} E → H, E → J, HJ → A, HJ → C, ¿Por qué buscamos FNBC? • La 3FN es la forma normal siguiente a FNBC. + (AIL) – {AI} AI → L La 3FN es apropiada en muchos casos pero no en aquellos casos en los que: La FNBC es la más alta forma normal. + HJ → E, HJ → I, HJ → K E→ J Comparación entre 3FN y FNBC − (ACEHIJKL) – {E,HJ} AI → L, E → H, E → J, HJ → A, HJ → C, HJ→E, E→H Elementos de Bases de Datos Clase 11 + HJ → C, HJ → E, HJ → I, HJ → K (CB) – {C} C→B (HJE) Descomposición en 3FN, JSP y PD. + C → B, AI → L, E → H, E → J, HJ → A, 41 Algoritmo 3FN y pd. Algoritmo 3FN, pd y jsp. Algoritmo FNBC y jsp. Bibliografía: Principles of Database and Knowledge Based Systems. Jeffrey Ullman. Capítulo 7 Elementos de Bases de Datos Clase 11 42 7