Beruflich Dokumente
Kultur Dokumente
A travs del siguiente ejercicio se intenta afirmar los conocimientos de normalizacin con un ejemplo simplificado de una base de datos para una pequea biblioteca.
CodLibro 1001 1004 1005 Titulo Variable compleja Visual Basic 5 Estadstica Autor Murray Spiegel E. Petroustsos Murray Spiegel Nancy Greenberg y Priya Nathan Ramalho Editorial McGraw Hill Anaya McGraw Hill NombreLector Prez Gmez, Juan Ros Tern, Ana Roca, Ren FechaDev 15/04/2005 17/04/2005 16/04/2005
1006
Oracle University
Oracle Corp.
20/04/2005
1007
Clipper 5.01
McGraw Hill
18/04/2005
Esta tabla no cumple el requisito de la Primera Forma Normal (1NF) de slo tener campos atmicos, pues el nombre del lector es un campo que puede (y conviene) descomponerse en apellido paterno, apellido materno y nombres. Tal como se muestra en la siguiente tabla.
CodLibro 1001 1004 1005 1006 1006 1007 Titulo Variable compleja Visual Basic 5 Estadstica OracleUniversity OracleUniversity Clipper 5.01 Autor Murray Spiegel E. Petroustsos Murray Spiegel NancyGreenberg Priya Nathan Ramalho Editorial McGraw Hill Anaya McGraw Hill Oracle Corp. Oracle Corp. McGraw Hill Paterno Prez Ros Roca Garca Garca Prez Roque Roque Gmez Materno Gmez Tern Nombres Juan Ana Ren Luis Luis Juan
1NF Como se puede ver, hay cierta redundancia caracterstica de 1NF. La Segunda Forma Normal (2NF) pide que no existan dependencias parciales o dicho de otra manera, todos los atributos no clave deben depender por completo de la clave primaria. Actualmente en nuestra tabla tenemos varias dependencias parciales si consideramos como atributo clave el cdigo del libro. Por ejemplo, el ttulo es completamente identificado por el cdigo del libro, pero el nombre del lector en realidad no tiene dependencia de este cdigo, por tanto estos datos deben ser trasladados a otra tabla. 2NF
Titulo Variable compleja Visual Basic 5 Estadstica Oracle University Oracle University Clipper 5.01
Autor Murray Spiegel E. Petroustsos Murray Spiegel NancyGreenberg Priya Nathan Ramalho
Editorial McGraw Hill Anaya McGraw Hill Oracle Corp. Oracle Corp. McGraw Hill
Hemos creado una tabla para contener los datos del lector y tambin tuvimos que crear la columna CodLector para identificar unvocamente a cada uno. Sin embargo, esta nueva disposicin de la base de datos necesita que exista otra tabla para mantener la informacin de qu libros estn prestados a qu lectores. Esta tabla se muestra a continuacin:
CodLibro 1001 1004 1005 1006 1007 CodLector 501 502 503 504 501 FechaDev 15/04/2005 17/04/2005 16/04/2005 20/04/2005 18/04/2005
Para la Tercera Forma Normal (3NF) la relacin debe estar en 2NF y adems los atributos no clave deben ser mutuamente independientes y dependientes por completo de la clave primaria. Tambin recordemos que dijimos que esto significa que las
columnas en la tabla deben contener solamente informacin sobre la entidad definida por la clave primaria y, por tanto, las columnas en la tabla deben contener datos acerca de una sola cosa. En nuestro ejemplo en 2NF, la primera tabla conserva informacin acerca del libro, los autores y editoriales, por lo que debemos crear nuevas tablas para satisfacer los requisitos de 3NF. 3NF
CodLibro Titulo
1001 Variable compleja 1004 Visual Basic 5 1005 Estadstica 1006 Oracle University 1007 Clipper 5.01
CodAutor
Autor
801 Murray Spiegel 802 E. Petroustsos 803 Nancy Greenberg 804 Priya Nathan 806 Ramalho
CodEditorial
Aunque hemos creado nuevas tablas para que cada una tenga slo informacin acerca de una entidad, tambin hemos perdido la informacin acerca de qu autor ha escrito qu libro y las editoriales correspondientes, por lo que debemos crear otras tablas que relacionen cada libro con sus autores y editoriales.
CodLibro 1001 1004 1005 1006 1006 1007 codAutor 801 802 801 803 804 806
Se define Dependencia Funcional, AB, si para cualquier valor de A le corresponde un nico valor de B. Ejemplo: Si A es el D.N.I., y B: Nombre, est claro que a cualquier D.N.I, le corresponde un nico nombre de titular. Dependencia funcional Completa, si B depende de A en su totalidad. Adquiere sentido plantearse este tipo de dependencia cuando A est compuesto por ms de un atributo. Sea A correspondiente a un atributo compuesto(D.N.I_Empleado y Cod._Dpto) y sea B correspondiente a un nico atributo(Nombre_Dpto). Ocurre en este ejemplo que B depende de Cod_Dpto., pero no de D.N.I._Empleado, por lo tanto no habra dependencia funcional completa. Mediante el diagrama de dependencias funcionales, que permite una representacin grfica de las dependencias funcionales facilitando su estudio. Se representan las dependencias funcionales y la clave primaria de la relacin se marca introducindola dentro de un cuadrado. Por ejemplo, para la relacin R(A,B,C,D), en la que se cumplen las siguientes dependencias: AC; A,BD. El grafo de dependencias quedara tal que as:
La dependencia AC es una dependencia funcional incompleta respecto a la clave y la dependencia A,B D es dependencia funcional completa respecto a la clave principal.
DESCOMPOSICIN DE DEPENDENCIAS
Para conseguir una descomposicin sin prdidas, lo que hacemos es ir rompiendo o descomponiendo las relaciones por las dependencias que no cumplen las restricciones de las formas normales para obtener otras relaciones ms pequeas que s cumplan dichas restricciones y a la misma vez impedir que se pierdan dependencias funcionales en estas descomposiciones. Para conseguirlo aplicamos la siguiente regla: Sea la relacin R(a,b,c,d,e,f) y la dependencias funcional ab que queremos descomponer, para ello se crean dos relaciones tal que as: R1(a,b) R2(a, TODOS_ATRIBUTOS {a,b}); Segunda Forma Normal (2FN) Una relacin R est en 2FN si cumple que : est en 1FN y todos sus atributos no-primos dependen funcionalmente de forma completa de la clave primaria. Ejemplo:
Sea la clave primaria de esta tabla la formada por los campos Cdigo_Empleado y Cdigo_dpto, podemos decir que la tabla se encuentra en primera forma normal, por tanto vamos a estudiar la segunda., para ello sabemos que las dependencias funcionales de la relacin son las siguientes: Codigo_EmpleadoNombre; Codigo_DptoDepartamento; Codigo_Empleado,Codigo_DptoAos Realizamos su grafo de dependencia:
Por tanto, al no existir dependencia funcionales totales respecto a la clave de todos los campos de la relacin no est en segunda forma normal, por ello debemos proceder a normalizarla, se aplica la descomposicin de dependencia slo a aquellas que no se encuentran en segunda forma normal: 1.- Codigo_EmpleadoNombre Por la descomposicin de perdidas obtenemos que la relacin R queda dividida en dos relaciones: R1(Codigo_Empleado,Nombre);
R2(Codigo_Empleado,Cdigo_Dpto,Departamento,Aos)
2.-Realizamos le grafo de dependencias de cada relacin obtenida y comprobamos que R1 se encuentra en 2FN y R2 no se encuentra en 2FN , luego debemos obtener la 2FN de esta relacin procediendo a la descomposin de la dependencia funcional que lo impide. Obteniendo dos relaciones ms: R21(Codigo_dpto,Departamento)
R22(Codigo_Empleado,Codigo_dpto,Aos)
3.-Determinamos que estas dos nuevas relaciones se encuentran en 2FN y finalizamos la descomposicin comprobando que no se ocasion ninguna prdida, es decir, todas las dependencias de la relacin original R permanecen en las relaciones R1,R21 y R22. En su representacin en tablas quedara por ejemplo tal que as:
TABLA R1
Cdigo Empleado Nombre 1 Juan 2 Pedro 3 Sonia 4 Vernica
Tabla R21
Cdigo Departamento Dpto. 2 I+D 3 Sistemas 6 Contabilidad Tabla R22
Tercera Forma Normal (3FN) Una relacin R est en 3FN si verifica que: Est en 2FN Ningn atributo no principal depende transitivamente de las claves (no existen dependencias entre atributos no principales) Informalmente podemos decir que una relacin est en 3FN si y solo si los atributos de la relacin dependen nicamente de la clave. Otra forma de indicarlo es que los atributos de la relacin no dependen unos de otros. Ejemplo: Sea la relacin R(codigo_alumno,nombre,curso,aula), dependencias funcionales: Codigo_alumnonombre,curso; Cursoaula; Con la consiguiente tabla: R Cdigo_alumno con las siguientes
1 2 3
1.-Suponemos que la tabla est en 1FN (por los datos de la tabla lo est) y comprobamos que esta en 2FN. Pero existe dependencia funcional transitiva por lo cual no est en 3FN. D 2.-Aplicamos descomposicin sin prdidas para la dependencia que impide la 3FN. Obtenemos: R1(curso,aula)
R2(codigo_alumno,nombre,curso)
Estas dos relaciones se encuentran en 3FN y se conservan las dependencias funcionales de la relacin original R, pues en R2 se mantiene Codigo_alumnonombre y con la unin de las dependencias de R2 Codigo_alumnocurso y R1 cursoaula se mantienen la dependencia Codigo_alumnocursoaula. Quedndonos las tablas normalizadas hasta 3FN:
TABLA R1
Curso Informtica Ingls Contabilidad Aula Aula A Aula B Aula C
TABLA R2
Cdigo Nombre Curso 1 Marcos Informtica 2 Lucas Ingls 3 Marta Contabilidad
Est relacin no est en FNBC porque existe una dependencia transitiva entre la clave primaria, un atributo no primo (forma parte de la clave) y un atributo primo (forma parte de la clave). Para la misma relacin R pero con las dependencias siguientes a,b c; cb,a obtenemos el grafo de dependencias:
En el grafo de dependencias podemos determinar que c es llave candidata de la relacin al determinar las dos claves primarias, luego la relacin se encuentra en FNBC. Ejemplo: Sea la relacin CURSO (Estudiante, Asignatura, Profesor) en la que un profesor solo imparte una nica asignatura. Con la dependencias funcionales siguientes: Estudiante, Asignatura Profesor; Profesorasignatura Realizamos su grafo de dependencias correspondiente obteniendo:
Del grafo de dependencias deducimos que no se encuentra en FNBC, procedemos a su normalizacin hasta FNBC. Aplicamos la regla de descomposicin sin prdidas a la dependencia que impide la restriccin en FNBC, Asignatura Profesor: PROFE_ASIG(profesor,asignatura)
ESTU_PROFE(estudiante,profesor)
Slo podemos asegurar una descomposicin sin prdidas para una normalizacin hasta 3FN, a partir de ella no podemos asegurar que no se pierdan dependencias. Si se llega a FNBC y se pierde una dependencia entonces podemos proceder de dos maneras posibles: 1.-Dejamos la normalizacin hasta 3FN. 2.-Rediseamos el entidad-relacin.
9.2.5.- CUARTA FORMA NORMAL (4FN) La cuarta forma normal se ve afectada por la existencias de las denominadas dependencias multivaluadas. Una tabla est en cuarta forma normal si y slo si para cualquier combinacin clave - campo no existen valores duplicados. Sea la relacin GEOMETRA(figura,color,tamao)
GEOMETRIA
Figura Color Cuadrado Rojo Cuadrado Azul Cuadrado Azul Crculo Blanco Crculo Azul Crculo Azul Tamao Grande Grande Mediano Mediano Pequeo Mediano
Vemos que ocurre que cuadrado grande est repetido; de igual forma que lo est crculo azul, entre otras cuantas ms Son estas repeticiones las que se deben evitar para obtenerse una relacin en 4NF.
COLOR
Figura Color Cuadrado Rojo Cuadrado Azul Crculo Blanco Crculo Azul