Ejemplo de normalización:

A través del siguiente ejercicio se intenta afirmar los conocimientos de normalización con un ejemplo simplificado de una base de datos para una pequeña biblioteca. El ejemplo lo saque de un libro por eso vamos a encontrar la particularidad de apellidos compuestos por materno y paterno.

 

CodLibro Titulo Autor Editorial NombreLector FechaDev
1001 Variable Compleja Murray Spiegel McGraw Hill Pérez Gómez,
Juan
15/04/2010
1004 Visual Basic
5
E. Petroustsos Anaya Ríos Terán,
Ana
17/04/2010
1005 Estadística Murray Spiegel McGraw Hill Roca, René 16/04/2010
1006 Oracle University Nancy Greenberg y Priya Nathan Oracle Corp. García Roque,
Luis
20/04/2010
1007 Clipper 5.01 Ramalho McGraw Hill Pérez Gómez,
Juan
18/04/2010

Esta tabla no cumple el requisito de la Primera Forma Normal (1NF) de sólo tener campos atómicos, en autor tenemos como un autor, si se quiere compuesto Nancy Greenberg y Priya Nathan. Lo que debemos hacer es separarlos, para que queden atómicos.


1NF



CodLibro Titulo Autor Editorial NombreLector FechaDev
1001 Variable Compleja Murray Spiegel McGraw Hill Pérez Gómez,
Juan
15/04/2010
1004 Visual Basic
5
E. Petroustsos Anaya Ríos Terán,
Ana
17/04/2010
1005 Estadística Murray Spiegel McGraw Hill Roca, René 16/04/2010
1006 Oracle University Nancy Greenberg Oracle Corp. García Roque,
Luis
20/04/2010
1006 Oracle University Priya Nathan Oracle Corp. García Roque,
Luis
20/04/2010
1007 Clipper 5.01 Ramalho McGraw Hill Pérez Gómez,
Juan
18/04/2010


Como se puede ver, hay cierta redundancia característica 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 código del libro.


Por ejemplo, el título es completamente identificado por el código del libro, pero el nombre del lector en realidad no tiene dependencia de este código, por tanto estos datos deben ser trasladados a otra tabla.



2NF


CodLibro Titulo Autor Editorial
1001 Variable Compleja Murray Spiegel McGraw Hill
1004 Visual Basic
5
E. Petroustsos Anaya
1005 Estadística Murray Spiegel McGraw Hill
1006 Oracle University Nancy Greenberg Oracle Corp.
1006 Oracle University Priya Nathan Oracle Corp.
1007 Clipper 5.01 Ramalho McGraw Hill


 
La nueva tabla sólo contendrá datos del lector donde separamos los apellidos paternos y maternos.

 

CodLector Paterno Materno Nombres
501 Pérez Pérez Juan
502 Ríos Terán Ana
503 Roca   René
504 Garcia Roque Luis


Hemos creado una tabla para contener los datos del lector y también tuvimos que crear la columna CodLector
para identificar unívocamente a cada uno. Sin embargo, esta nueva disposición de la base de datos necesita que exista otra tabla para mantener la información de qué libros están prestados a qué lectores. Esta tabla se muestra a continuación:

 

 

CodLector CodLibro FechaDev
501 1001 15/04/2010
502 1004 17/04/2010
503 1005 16/04/2010
504 1006 20/04/2010
501 1007 18/04/2010

Para la Tercera Forma Normal (3NF) la relación debe estar en 2NF y además los atributos no clave deben ser mutuamente independientes y dependientes por completo de la clave primaria. También recordemos que dijimos que esto significa que las columnas en la tabla deben contener solamente información 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 información 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 Estadística
1006 Oracle University
1007 Clipper 5.01



CodAutor Autor
801 Murray Spiegel
802 E. Petroustsos
803 Nancy Greenberg
804 Priya Nathan
806 Ramalho



CodEditorial Editorial
901 McGraw Hill
902 Anaya
903 Oracle Corp.

Aunque hemos creado nuevas tablas para que cada una tenga sólo información acerca de una entidad, también hemos perdido la información 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.




CodAutor CodLibro
801 1001
802 1004
801 1005
803 1006
804 1006
806 1007



CodEditorial CodLibro
901 1001
902 1004
901 1005
903 1006
901 1007


Y el resto de las tablas no necesitan modificación.




CodLector Paterno Materno Nombres
501 Pérez Pérez Juan
502 Ríos Terán Ana
503 Roca   René
504 Garcia Roque Luis


CodLector CodLibro FechaDev
501 1001 15/04/2010
502 1004 17/04/2010
503 1005 16/04/2010
504 1006 20/04/2010
501 1007 18/04/2010


Espero que haya sido ilustrativo.