Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Normalización Análisis y Diseño de Sistemas Clase 16 – Normalización Es un proceso que se aplica sobre los almacenamientos y que permite determinar una mejor organización de almacenamientos lógicos. Toma la definición de un almacenamiento y a través de una serie de test verifica que se satisfaga una determinada forma normal. (Codd 1972). La normalización se basa en los conceptos de dependencia funcional y llave primaria. Lic. María Mercedes Vitturini 1er. CUATRIMESTRE 2007 Dpto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 2 Análisis y Diseño de Sistemas - Clase 16 Dependencias Funcionales Ejemplos Se dice que un atributo B de una relación R (o almacenamiento) depende funcionalmente del atributo A de R, si en todo instante de tiempo, cada valor de A no tiene más de un atributo asociado de B en la relación R. artículo_código Æ artículo_precio + artítculo_descripción. reserva_número Æ reserva_fecha + cliente_número + vuelo_número B depende funcionalmente de A ≡ A identifica a B. Notación: persona_tipoDoc + persona_nroDoc Æ persona_nombre + persona_apellido + persona_fechaNac. alumno_legajo + materia_código + fecha_examen Æ examen_nota. Si B depende funcionalmente a A, A Æ B Un atributo puede depender funcionalmente de un conjunto de atributo: AB Æ C Análisis y Diseño de Sistemas - Clase 16 3 Llave de una Relación Llave de una Relación Un conjunto de atributos A en una relación R constituyen una clave ó llave si todos los atributos de R dependen funcionalmente de A. Esto es, A Æ R, y no existe ningún subconjunto A´, A A A´⊂ ⊂ A tal que A´determine A determine funcionalmente a R. Artículos (AD+ED) = artículo_código + artículo_descripción + artículo-precio. Análisis y Diseño de Sistemas - Clase 16 Una relación R puede tener más de un conjunto de atributos que sean llaves de R. Generalmente, se selecciona uno de ellos y se lo denota como llave primaria. Ejemplo: Ejemplo 4 Análisis y Diseño de Sistemas - Clase 16 Alumnos (AD+ED) = alumno_registro + alumno_nombre + alumno_DNI + alumno_apellido + alumno_nombre ¿Cuál es la llave? 5 Análisis y Diseño de Sistemas - Clase 16 6 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 1 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Observaciones Atributos Primos y No primos Los conceptos de normalización están formalmente definidos para el modelo de datos relacional, que acompañó a los desarrollos estructurados. En este curso se p presenta al modelo de datos relacional intuitivamente. Informalmente, el concepto de relación se relaciona con el concepto de almacenamiento de datos. DEFINICIONES PREVIAS Es equivalente hablar del almacenamiento “personas” o de la relación “personas”. 7 Análisis y Diseño de Sistemas - Clase 16 Ejemplo Llaves: alumno_nroRegistro _ g alumno_tipoDoc + alumno_nroDoc. Atributos primos: alumno_nroRegistro, alumno_tipoDoc, alumno_nroDoc. Atributos no primos: alumno_apellido, alumno_nombre. Ejemplos Análisis y Diseño de Sistemas - Clase 16 materia_código → materia_nombre. alumno_nroRegistro + materia_código + examen_fecha → examen_nota. Las formas normales son: Primera, Segunda, Tercera y de Boyce Codd. Buscan una estructura lógica de los datos que minimice los problemas de diseño: Dependencias funcionales parciales: 10 Normalización Dependencias funcionales totales: 8 Un atributo o conjunto de atributos B de una relación R se dice que depende funcionalmente en forma total de otro conjunto de atributos A de la relación R, si B depende funcionalmente de la totalidad de A, pero de ningún subconjunto de A. Ejemplo: AB Æ C Si C depende funcionalmente en forma total ⇒ AÆC BÆC 9 Análisis y Diseño de Sistemas - Clase 16 Análisis y Diseño de Sistemas - Clase 16 Dependencia Funcional Total Alumnos (AD + ED) = alumno_nroRegistro + alumno_tipoDoc + alumno_nroDoc + alumno_apellido + alumno_nombre. Un atributo A de una relación R es No Primo si no forma parte de ninguna de las llaves de R C R. Caso contrario t i se di dice Primo. Pi materia_código + alumno_LU → materia_nombre. pelicula_código+ socio_número → socio_apellido + socio_nombre. Análisis y Diseño de Sistemas - Clase 16 11 Repetición de información. Incapacidad para representar información. Se basa en los conceptos: Llave (o clave primaria) de los almacenamientos Dependencia funcional entre atributos del almacenamiento. Análisis y Diseño de Sistemas - Clase 16 12 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 2 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Problemas de Diseño Problemas Ejemplo: supongamos la siguiente definición en el diccionario de datos: Personas (AD+ED) = persona_TipoDocumento + persona_NroDocumento + persona_Apellido + persona_Nombre + ciudad_CódigoPostal + ciudad_Nombre Tipo Doc Nro. Doc DNI 111111 DNI 222222 DNI 333333 DNI 444444 Apellido Díaz Suárez Lino Cané Nombre Cod. Postal Nombre Localidad Alberto 8000 Bahía Blanca Patricia 8000 Bahía Blanca Lucas 8000 Coronel Suárez María 8102 Punta Alta Análisis y Diseño de Sistemas - Clase 16 La corrección de diseño de un almacenamiento que no respetan una forma normal dada será a través de descomponerlo en dos o más almacenamientos. ¿Qué Q é se h hace con ell caso “8000 “8000- Coronel C lS Suárez? á ? Análisis y Diseño de Sistemas - Clase 16 14 Definición: Un esquema de relación respeta la Primer Forma Normal (1FN) si no existen atributos o grupos de atributos que se repiten q dentro del esquema. Esta forma normal pide que el dominio de todos los atributos sea atómico. 15 Análisis y Diseño de Sistemas - Clase 16 16 Segunda Forma Normal Respeta la 1FN: Primer Forma Normal (1FN) Ejemplos ¿Qué pasa si necesitamos cambiar el nombre de la ciudad? 13 Para determinar la forma normal que respeta un almacenamiento es necesario plantear todas las dependencias funcionales entre sus atributos. Análisis y Diseño de Sistemas - Clase 16 Incapacidad para representar información: si se conoce el código postal de Viedma, pero no hay en el almacenamiento alguna persona de Viedma, ¿cómo guardar este dato en el sistema? Formas Normales Repetición de información: si la mayoría de las personas son de Bahía Blanca, tendríamos que repetir la información “8000- Bahía Blanca” tantas veces como personas. Algunos problemas derivados: Clientes (AD+ED) = cliente_Número + cliente_TipoDoc + cliente_DNI + cliente_Apellido + cliente_Nombre + localidad_CP + localidad_Nombre. No respeta 1FN: Inscripciones (AD+ED) = alumno_registro + alumno_nombre + 0{materia_código + materia_nombre + inscripción_fecha + inscripción_resultado}n Análisis y Diseño de Sistemas - Clase 16 17 Definición: Un esquema de relación respeta la Segunda Forma Normal (2FN), si: Respeta la 1FN y Todos los atributos no primos del esquema de relación l ió dependen d d ttotalmente t l t de d lla clave l ( d (no de un subconjunto de ellos). Análisis y Diseño de Sistemas - Clase 16 18 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 3 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Ejemplos Para reflexionar Respetan la 2FN: Materias (AD+ED) = materia_código + materia_nombre. materia_Código Æ materia_Nombre. Personas (AD+ED) = persona_id + persona_nombre + localidad_códPostal + localidad_nombre Todo almacenamiento (o relación) cuyas llaves candidatas están formadas por un único atributo siempre va a respetar la 2FN. Persona_id Æ persona_nombre, localidad_códPostal, localidad_nombre No respeta la 2FN: Alumnos (AD+ED) = alumno_NroRegistro + carrera_Código + carrera_Nombre. carrera_Código Æ carrera_Nombre Análisis y Diseño de Sistemas - Clase 16 19 Tercer Forma Normal (3FN) Respeta la 3FN: Está en 2FN y No existen dependencias entre atributos no primos. Materias (AD+ED) = materia_Código + materia_Nombre + departamento_Código. Definición 2: Un esquema de relación está en la Tercer Forma Normal (3FN) si respeta la 2FN y no existen dependencias transitivas de la llave entre atributos no primos. Materias (AD+ED) = materia_Código + materia_Nombre + departamento_Código + departamento_Nombre. 21 Descomposiciones normalizadas Análisis y Diseño de Sistemas - Clase 16 Redundancia de información. Inconsistencias Inconsistencias. Anomalías de inserción y de borrado. 22 Supongamos ahora la siguiente definición para un almacenamiento Dicta, que mantiene información de los docentes y las materias que dictan cada año: Dictan (AD+ED) = prof_legajo + prof_nombre + prof_domicilio + 0{mat_código + dicta_año + mat_nombre + dpto_código + dpto_nombre}n La solución a un problema de diseño de datos es encontrar una descomposición mejor. Análisis y Diseño de Sistemas - Clase 16 materia_Código Æ materia_Nombre + departamento_Código. departamento_Código Æ departamento_Nombre Descomposiciones normalizadas Los almacenamientos (o relaciones) que no respetan la 3FN no responden a un buen diseño de datos. Tienen problemas de: materia_Código Æ materia_Nombre + departamento_Código. No respeta la 3FN: Análisis y Diseño de Sistemas - Clase 16 20 Ejemplos Definición 1: Un esquema de relación respeta la Tercer Forma Normal (3FN) si: Análisis y Diseño de Sistemas - Clase 16 23 Análisis y Diseño de Sistemas - Clase 16 24 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 4 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Primer Forma Normal Descomposición en 1FN El almacenamiento Dictan NO RESPETA LA 1FN: Existen atributos no atómicos. En este caso por cada docente se mantiene un grupo repetitivo con las materias que dicta. Para contar con un modelo de datos que respete la 1FN, la solución es descomponer. Análisis y Diseño de Sistemas - Clase 16 Uno con todos los datos que no pertenecen al grupo repetitivo. Uno con el grupo que se repite al que se le agrega la clave del esquema del inciso anterior. 25 Descomposición en 1FN Si un esquema no respeta la 1FN se debe descomponer en dos esquemas. Análisis y Diseño de Sistemas - Clase 16 26 El almacenamiento Dictan1 Dictan1 = prof_legajo + prof_nombre + prof_domicilio. Dictan1 (AD+ED) = prof_legajo + prof_nombre + prof_domicilio. Clave: prof_legajo. Atributos p primos: p prof_legajo. _ g j Atributos no primos: prof_nombre, prof_domicilio. Dependencias Funcionales: Dictan2 = prof_legajo prof legajo + mat_código mat código + dicta_año + mat_nombre + dpto_código + dpto_nombre. Análisis y Diseño de Sistemas - Clase 16 27 El almacenamiento Dictan2 Clave: prof_legajo + mat_código + dicta_año. Atributos primos: prof_legajo, mat_código, dicta_año Atributos no primos: mat_nombre, mat nombre dpto_código, dpto código dpto_nombre Dependencias Funcionales: Prof_legajo + dicta_año + mat_código → mat_nombre + dpto_código + dpto_nombre. mat_código → mat_nombre + dpto_código. dpto_código → dpto_nombre. Análisis y Diseño de Sistemas - Clase 16 Análisis y Diseño de Sistemas - Clase 16 28 Segunda Forma Normal Dictan2 (AD+ED)= prof_legajo + mat_código + dicta_año + mat_nombre + dpto_código + dpto_nombre prof_legajo → prof_nombre + prof_domicilio. 29 Dictan1 respeta la 2FN ya que la clave esta formada por un único atributo. Dictan1 (AD+ED) = prof_legajo + prof_nombre + prof_domicilio. Análisis y Diseño de Sistemas - Clase 16 30 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 5 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Segunda Forma Normal Descomposición en 2FN Dictan2 NO RESPETA la 2FN. z Dictan2 (AD+ED)= prof_legajo + mat_código + dicta_año + mat_nombre + dpto_código + dpto_nombre. Clave: prof_legajo, prof legajo mat mat_código, código dicta dicta_año. año Dependencias funcionales: → mat_nombre + dpto_código. atributos no primos: mat_nombre, dpto_código y dpto_nombre dependen parcialmente de la clave. mat_código Los Análisis y Diseño de Sistemas - Clase 16 31 Descomposición en 2FN Análisis y Diseño de Sistemas - Clase 16 z z z Dictan22 (AD+ED)= mat_código + mat_nombre + dpto_código + dpto_nombre z 33 Clave: prof_legajo + mat_código + dicta_año. Atributos primos: prof_legajo, mat_código, dicta_año. Atributos no primos: no posee. Dependencias Funcionales: no posee Análisis y Diseño de Sistemas - Clase 16 34 Tercer Forma Normal El almacenamiento Dictan22 (AD+ED)= mat_código + mat_nombre + dpto_código + dpto_nombre. zDictan22 mat_código. primos: mat_código. zAtributos no primos: mat_nombre, dpto_código, dpto_nombre. zDependencias Funcionales: zClave: zAtributos zmat_código Dictan21 (AD+ED) = prof_legajo + mat_código + dicta_año z Dictan21 (AD+ED) = prof_legajo + mat_código + dicta año dicta_año Análisis y Diseño de Sistemas - Clase 16 32 El almacenamiento Dictan21 Dictan2 (AD+ED)= prof_legajo + mat_código + dicta_año + mat_nombre + dpto_código + dpto_nombre. La solución para un almacenamiento que no respeta la 2FN es descomponer: z En un almacenamiento con la llave primaria y todos aquellos atributos que dependen totalmente de la clave primaria (si los hubiera). z Otro almacenamiento con los atributos que dependen de parte de la llave, junto con la parte de la clave que ocasiona la dependencia. El almacenamiento Dictan21 respeta la 3FN ya que no posee ningún atributo que no forme parte de la clave, por lo tanto no existen dependencias entre atributos no primos. Dictan21 (AD+ED)= prof_legajo + mat_código + dicta_año → mat_nombre + dpto_código → dpto_nombre zdpto_código Análisis y Diseño de Sistemas - Clase 16 35 Análisis y Diseño de Sistemas - Clase 16 36 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 6 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Tercer Forma Normal Descomposición 3FN El almacenamiento Dictan22 NO RESPETA 3FN. Existe una dependencia funcional entre los atributos no primos dpto_código y dpto_nombre. Ninguno de ellos forma parte de la clave mat_código. La solución está en descomponer al almacenamiento Dictan22 Análisis y Diseño de Sistemas - Clase 16 Si un almacenamiento no respeta la 3FN, corresponde descomponerlo en dos esquemas. z z z Un esquema con la clave primaria y todos aquellos atributos que dependen totalmente de la clave primaria (sin incluir el que depende transitivamente). Otro esquema con los atributos participan de la dependencia que viola la 3FN. En el ejemplo: 37 Análisis y Diseño de Sistemas - Clase 16 38 El almacenamiento Dictan221 Descomposición en 3FN z z z Dictan22 (AD+ED)= mat_código + mat_nombre + dpto_código + dpto_nombre. Dictan221 (AD+ED) = mat_código + mat_nombre + dpto_código. Clave: mat_código. Atributos primos: mat_código z Atributos no primos: mat_nombre, dpto_código. z Dependencias Funcionales: z mat_código → mat_nombre + dpto_código z z Dictan221 (AD (AD+ED)= ED) mat_código mat código + mat_nombre + dpto_código z Dictan222 (AD+ED)= dpto_código + dpto_nombre Análisis y Diseño de Sistemas - Clase 16 z 39 Análisis y Diseño de Sistemas - Clase 16 Descomposición en 3FN El almacenamiento Dictan3221 (AD+ED)= dpto_código + dpto_nombre zDictan222 dpto_código. zAtributos primos: dpto_código dpto código zAtributos no primos: dpto_nombre. zDependencias Funcionales: zdpto_código → dpto_nombre zClave: Análisis y Diseño de Sistemas - Clase 16 40 41 Dictan1 (AD+ED)= prof_legajo + prof_nombre + prof_domicilio. Dictan21 (AD+ED)= prof_legajo + mat_código + dicta_año. Di t 221 (AD+ED)= Dictan (AD+ED) mat_código t ódi + mat_nombre + dpto_código. Dictan222 (AD+ED)= dpto_código + dpto_nombre. Análisis y Diseño de Sistemas - Clase 16 42 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 7 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2007. Descomposición en 3FN con nombres significativos Impacto en los modelos del Análisis Estructurado Profesores (AD+ED) = prof_legajo + prof_nombre + prof_domicilio. Dictan (AD+ED)= prof_legajo + mat código + dicta_año. mat_código dicta año Materias (AD+ED)= mat_código + mat_nombre + dpto_código Departamentos (AD+ED) = dpto_código + dpto_nombre. Análisis y Diseño de Sistemas - Clase 16 Se reveen los diferentes niveles del DFD donde aparecen los almacenamientos que fueron normalizados y se reemplazan por los nuevos almacenamientos. Se revisan los procesos de transformación para verificar los accesos a los almacenamientos. 43 Análisis y Diseño de Sistemas - Clase 16 44 Ejercicios propuestos Es de esperar que al momento de definir los almacenamientos, se descubran problemas de normalización. Cuanto antes se corrijan los problemas de normalización menos modificaciones habrá que realizar. Análisis y Diseño de Sistemas - Clase 16 Se reemplazan las definiciones de los almacenamientos por las nuevas definiciones normalizadas. E ell Diagrama En Di d de Flujos Fl j de d Datos: D t Observaciones Luego de normalizar revisar los modelos: En el Diccionario de datos: Normalizar las siguientes estructuras: 45 R1 = A + B + 1{ C }n R2 = A + B + 1{ C + D} n R3 = A + B + C + D y B Æ C R4 = A + B + C + D y C Æ D R5 = A + B + 1{ C }n + 1{ D }n R6 = A + B + 1 { C + D + 1 { E + F }n }n Análisis y Diseño de Sistemas - Clase 16 46 Temas de la clase de hoy Conceptos de Normalización de almacenamientos Dependencias funcionales. Claves de almacenamiento. Atributos primos y no primos. primos Formas normales (1FN, 2FN y 3FN) Bibliografía: Database System Concepts – Abraham Silberschatz – Capítulo 7 Análisis y Diseño de Sistemas - Clase 16 47 Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 8