Tema 5: Normalización en Bases da Datos Andrés Cordón Franco Departamento de Ciencias de la Computación e Inteligencia Artificial UNIVERSIDAD DE SEVILLA Bases de Datos Curso 2005–06 1 Contenido: 5.1 Introducción a la Teorı́a de la Normalización en Bases de Datos 5.2 Dependencias funcionales. Tipos: completa, transitiva, trivial, elemental 5.3 Primera Forma Normal (1FN) 5.4 Segunda Forma Normal (2FN) 5.5 Tercera Forma Normal (3FN) 5.6 Forma Normal de Boyce–Codd (FNBC) 2 Introducción: Relación ESCRIBE: AUTOR Date, C. Date, C. Gardarin Gardarin Kim,W. PAÍS USA. USA Chile Chile China COD 01 02 03 04 04 TÍTULO DB SQL(I) ModeloER SQL(II) SQL(II) EDIT. Ad Ad Verlag ACM ACM Problemas: 1. Redundancia de datos 2. Anomalı́as de modificación de datos 3. Anomalı́as de inserción de datos 4. Anomalı́as de borrados de datos Formas normales(FN): conjunto de restricciones sobre tablas que evitan problemas de redundancia y anomalı́as de modificación, inserción y borrado de datos. 3 Dependencias funcionales(I): R relación, X, Y subconjuntos de sus campos. (•) Y depende funcionalmente de X si cada valor de X tiene asociado el mismo valor de Y en la relación R. Lo escribiremos: X → Y . X ≡ determinante o implicante Y ≡campos implicados Ejemplo: Escribe(autor, pais, codigo, titulo, edit) autor → pais codigo → titulo, editorial cod, autor → editorial, pais Nota: Dado un valor de X, no tiene por qué ser posible averiguar el valor de Y . Sólo se exige que todas las tuplas que aparezcan en la tabla R con el mismo valor para los campos de X obligatoriamente tengan el mismo valor para los campos de Y . 4 Dependencias funcionales(II): (•) Dependencia funcional plena o completa: Y tiene dependencia funcional plena o completa del conjunto de campos X si depende funcionalmente de X, pero NO depende de ningún subconjunto propio de X. Ejemplo: EVAL(alumno, asignatura, nota) El campo nota de la relación EVAL tiene dependencia completa de alumno + asignatura. alumno, asignatura → nota alumno 9 nota asignatura 9 nota (•) Dependencia funcional trivial: X → Y es trivial si Y es un subconjunto de X. Ejemplo: autor, cod → autor alumno, asignatura, nota → nota 5 Dependencias funcionales(III): (•) Dependencia funcional transitiva: Z tiene dependencia funcional transitiva respecto de X a través de Y si se cumple: (i) X → Y , Y → Z, pero (ii) Y 9 X Ejemplo 1: LIBRO(isbn, editorial, pais, f echa) pais depende transitivamente de isbn, pues: isbn → editorial editorial → pais editorial 9 isbn Ejemplo 2: CORREO(usuario, DN I, pais) pais NO depende de manera transitiva de DN I, puesto que: DN I → usuario usuario → pais, pero... usuario → DN I Nota: DN I y usuario son campos equivalentes (lo escribiremos DN I ↔ usuario). 6 Dependencias funcionales(IV): (•) Dependencia funcional elemental: X → Y es elemental si Y es un atributo unitario, y la dependencia funcional es completa y no trivial. Nota: Sólo las dependencias elementales son útiles para la normalización. Propiedad: Todas las dependencias funcionales de una relación pueden deducirse a partir de las dependencias elementales aplicando las siguientes reglas: Axiomas de Armstrong: (A1) (Reflexión) Si Y ⊆ X, entonces X → Y . (A2) (Aumentativo) Si X → Y y Z ⊆ W , XW → Y Z. (A3) (Transitividad) Si X → Y e Y → Z, X → Z. 7 Primera Forma Normal: Para estudira el grado de normalización de una relación R se parte de: 1. Conjunto de las dependencias funcionales elementales que aparecen en R, y 2. Conjunto de todas las claves candidatas. Definición:[Codd,1970 ] Una relación R está en primera forma normal (1FN) si NO se admiten atributos multivaluados. Nota: Por la propia definición del modelo de datos relacional, NO se admiten atributos multivaluados. En consecuencia, TODAS las relaciones que aparecen en el modelo de datos relacional están en 1FN. 8 Segunda Forma Normal(I): Definición: Un campo de R es principal si pertenece a alguna clave candidata de R. Ejemplo: LIBRO(isbn, codlibro, autor, edi, f echa) Campos principales: isbn, codlibro. Definición:[Codd,1970 ] R está en segunda forma normal (2FN) si: 1. R está en 1FN, y 2. cada campo NO principal de R tiene dependencia funcional completa respecto de cada una de las claves candidatas. Nota: Para determinar si una relación está en 2FN es necesario calcular previamente todas sus claves candidatas. 9 Segunda Forma Normal(II): Ejemplo: ESCRIBE(autor, pais, isbn, titulo, edit) La relación ESCRIBE no está en 2FN. Clave candidata: (autor, isbn) autor, isbn → pais ¡Pero la dependencia no es completa!: autor → pais (•) ¿Cómo conseguir un conjunto de relaciones equivalentes en 2FN? Idea: R1(autor, isbn), R2(autor, pais), R3(isbn, titulo, edit) Propiedad: Si todas las claves candidatas de una relación son campos unitarios, dicha relación está en 2FN. 10 Tercera Forma Normal: Definición:[Codd,1970 ] R está en tercera forma normal (3FN) si: 1. R está en 2FN, y 2. ningún campo NO principal depende transitivamente de una clave candidata. Ejemplo: SOCIO(dni, ciudad, pais, edad) La relación SOCIO no está en 3FN. El campo no principal pais depende transitivamente de la clave dni (a través del campo ciudad). (•) ¿Cómo conseguir un conjunto de relaciones equivalentes en 3FN? Idea: R1(dni, ciudad, edad), R2(ciudad, pais) Propiedad: Si una relación tiene a lo sumo un campo no principal, entonces está en 3FN. 11 Forma Normal de Boyce-Codd(I): Recordar : Si X → Y , entonces X es el implicante de la dependencia funcional. Definición:[Boyce–Codd,1974 ] R está en forma normal de Boyce–Codd (FNBC) si: 1. R está en 2FN, y 2. todo implicante de R es una clave candidata de la relación. Propiedad: Si R está en forma normal de Boyce– Codd, entones también está en 3FN. Dem: Si un campo no principal X depende transitivamente de una clave a través de un campo Y , entones Y es un implicante de la relación que no actúa como clave candidata. 12 Forma Normal de Boyce-Codd(II): Ejemplo: Relación EVAL EVAL(dni, nombre, codalumno, asig, nota) La relación EVAL no está en FNBC. Claves candidatas: (dni, codasig) y (codalumno, codasig) Se cumple que dni → nombre. Luego, dni es un implicante que NO funciona como calve de la relación EVAL. (•) ¿Cómo obtener un conjunto de relaciones equivalentes en FNBC? Idea: R1(dni, codalumno, nombre), R2(dni, codasig, nota) Propiedad: Si R está en 3FN y sus claves candidatas NO se solapan, entonces R también está en FNBC. 13 Bibliografı́a: Concepción y diseño de bases de datos, Adoración de Miguel, Mario Piattini, RA– MA Editorial (1993) Apuntes de Ficheros y Bases de Datos, Mercedes Marqués, Universidad Jaume I en Castellón (2001) 14