Download - Sesión Nº 7 - Formas Normales
-
Taller de Base de Datos
Normalizacin de Base de Datos
47
7. NOMALIZACIN DE BASE DE DATOS
La normalizacin es el proceso de organizar los datos de una base de datos.
Se incluye la creacin de tablas y el establecimiento de relaciones entre ellas
segn reglas diseadas tanto para proteger los datos como para hacer que la
base de datos sea ms flexible al eliminar la redundancia y las dependencias
incoherentes.
Los datos redundantes desperdician el espacio de disco y crean problemas de
mantenimiento. Si hay que cambiar datos que existen en ms de un lugar, se
deben cambiar de la misma forma exactamente en todas sus ubicaciones. Un
cambio en la direccin de un cliente es mucho ms fcil de implementar si los
datos slo se almacenan en la tabla Clientes y no en algn otro lugar de la
base de datos.
Qu es una "dependencia incoherente"? Aunque es intuitivo para un usuario
mirar en la tabla Clientes para buscar la direccin de un cliente en particular,
puede no tener sentido mirar all el salario del empleado que llama a ese
cliente. El salario del empleado est relacionado con el empleado, o depende
de l, y por lo tanto se debera pasar a la tabla Empleados. Las dependencias
incoherentes pueden dificultar el acceso porque la ruta para encontrar los datos
puede no estar o estar interrumpida.
Hay algunas reglas en la normalizacin de una base de datos. Cada regla se
denomina una "forma normal". Si se cumple la primera regla, se dice que la
base de datos est en la "primera forma normal". Si se cumplen las tres
primeras reglas, la base de datos se considera que est en la "tercera forma
normal". Aunque son posibles otros niveles de normalizacin, la tercera forma
normal se considera el mximo nivel necesario para la mayor parte de las
aplicaciones.
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
ALUMNOHighlight
-
Taller de Base de Datos
Normalizacin de Base de Datos
48
Al igual que con otras muchas reglas y especificaciones formales, en los
escenarios reales no siempre se cumplen los estndares de forma perfecta. En
general, la normalizacin requiere tablas adicionales y algunos clientes
consideran ste un trabajo considerable. Si decide infringir una de las tres
primeras reglas de la normalizacin, asegrese de que su aplicacin se
anticipa a los problemas que puedan aparecer, como la existencia de datos
redundantes y de dependencias incoherentes.
7.1. GRADOS DE NORMALIZACIN.
Existen bsicamente tres niveles de normalizacin: Primera Forma Normal
(1NF), Segunda Forma Normal (2NF) y Tercera Forma Normal (3NF). Cada
una de estas formas tiene sus propias reglas.
Cuando una base de datos se conforma a un nivel, se considera normalizada a
esa forma de normalizacin. No siempre es una buena idea tener una base de
datos conformada en el nivel ms alto de normalizacin, puede llevar a un nivel
de complejidad que pudiera ser evitado si estuviera en un nivel ms bajo de
normalizacin.
En la tabla siguiente se describe brevemente en que consiste cada una de las
reglas, y posteriormente se explican con ms detalle.
PRIMERA FORMA NORMAL.
La regla de la Primera Forma Normal establece que las columnas repetidas
deben eliminarse y colocarse en tablas separadas.
Poner la base de datos en la Primera Forma Normal resuelve el problema de
los encabezados de columna mltiples. Muy a menudo, los diseadores de
ALUMNOHighlight
ALUMNOHighlight
-
Taller de Base de Datos
Normalizacin de Base de Datos
49
bases de datos inexpertos harn algo similar a la tabla no normalizada. Una y
otra vez, crearn columnas que representen los mismos datos. La
normalizacin ayuda a clarificar la base de datos y a organizarla en partes ms
pequeas y ms fciles de entender. En lugar de tener que entender una tabla
gigantesca y monoltica que tiene muchos diferentes aspectos, slo tenemos
que entender los objetos pequeos y ms tangibles, as como las relaciones
que guardan con otros objetos tambin pequeos.
Qu debe cumplir una relacin en su primera forma normal.
Una relacin R se encuentra en 1FN si y solo s por cada rengln
columna contiene valores elementales.
Las celdas de las tablas poseen valores simples y no se permiten grupos
ni arreglos repetidos como valores, es decir, contienen un solo valor por
cada celda.
Todos los ingresos en cualquier columna (atributo) deben ser del mismo
tipo.
Cada columna debe tener un nombre nico, el orden de las columnas en
la tabla no es importante.
Dos filas o renglones de una misma tabla no deben ser idnticas,
aunque el orden de las filas no es importante.
Elimine los grupos repetidos de las tablas individuales.
Cree una tabla independiente para cada conjunto de datos relacionados.
Identifique cada conjunto de datos relacionados con una clave principal.
Se muestra un ejemplo E-R en
su primera forma normal.
Una relacin R se encuentra en 1FN si y solo s por cada
rengln columna contiene valores elementales.
-
Taller de Base de Datos
Normalizacin de Base de Datos
50
Ejemplo 1:
En esta Gua de Pedido, la PK es el Nro_GI (nmero de gua) quin determina
a los dems atributos de la tabla.
Ejemplo 2:
En este caso de la biblioteca, la PK es el CodLibro, quin determina a los dems
atributos de la tabla.
SEGUNDA FORMA NORMAL.
Una relacin R est en 2FN si y solo si est en 1FN y los atributos no primos
dependen funcionalmente de la llave primaria.
Cree tablas independientes para conjuntos de valores que se apliquen a
varios registros.
Relacione estas tablas con una clave externa.
Los registros no deben depender de nada que no sea una clave principal de
una tabla, una clave compuesta si es necesario. Por ejemplo, considere la
direccin de un cliente en un sistema de contabilidad. La direccin se necesita
en la tabla Clientes, pero tambin en las tablas Pedidos, Envos, Facturas,
Cuentas por cobrar y Colecciones. En lugar de almacenar la direccin de un
-
Taller de Base de Datos
Normalizacin de Base de Datos
51
cliente como una entrada independiente en cada una de estas tablas,
almacnela en un lugar, ya sea en la tabla Clientes o en una tabla Direcciones
independiente.
Represente funcionalmente la 2NF
TERCERA FORMA NORMAL.
Una tabla est normalizada en esta forma si todas las columnas que no son
llave son funcionalmente dependientes por completo de la llave primaria y no
hay dependencias transitivas. Comentamos anteriormente que una
dependencia transitiva es aquella en la cual existen columnas que no son llave
que dependen de otras columnas que tampoco son llave.
Cuando las tablas estn en la Tercera Forma Normal se previenen errores de
lgica cuando se insertan o borran registros. Cada columna en una tabla est
identificada de manera nica por la llave primaria, y no deben haber datos
repetidos. Esto provee un esquema limpio y elegante, que es fcil de trabajar y
expandir.
Un dato sin normalizar no cumple con ninguna regla de normalizacin. Para
explicar con un ejemplo en que consiste cada una de las reglas, vamos a
considerar los datos de la siguiente tabla.
Los valores de un registro que no sean parte de la clave de ese registro no
pertenecen a la tabla. En general, siempre que el contenido de un grupo de
campos pueda aplicarse a ms de un nico registro de la tabla, considere
colocar estos campos en una tabla independiente. Por ejemplo, en una tabla
Contratacin de empleados, puede incluirse el nombre de la universidad y la
direccin de un candidato. Pero necesita una lista completa de universidades
Elimine los campos que no dependan de la clave.
-
Taller de Base de Datos
Normalizacin de Base de Datos
52
para enviar mensajes de correo electrnico en grupo. Si la informacin de las
universidades se almacena en la tabla Candidatos, no hay forma de enumerar
las universidades que no tengan candidatos en ese momento. Cree una tabla
Universidades independiente y vinclela a la tabla Candidatos con el cdigo de
universidad como clave.
EXCEPCIN: cumplir la tercera forma normal, aunque en teora es deseable,
no siempre es prctico. Si tiene una tabla Clientes y desea eliminar todas las
dependencias posibles entre los campos, debe crear tablas independientes
para las ciudades, cdigos postales, representantes de venta, clases de
clientes y cualquier otro factor que pueda estar duplicado en varios registros.
En teora, la normalizacin merece el trabajo que supone. Sin embargo,
muchas tablas pequeas pueden degradar el rendimiento o superar la
capacidad de memoria o de archivos abiertos.
Una relacin R est en 3FN si y solo si est en 2FN y todos sus
atributos no primos dependen no transitivamente de la llave
primaria.
-
Taller de Base de Datos
Normalizacin de Base de Datos
53
EJEMPLO NORMALIZACION HASTA LA 3 FN:
Estos pasos demuestran el proceso de normalizacin de una tabla de alumnos
ficticia.
1. Tabla sin normalizar:
N alumno Tutor Despacho-Tut Clase1 Clase2 Clase3
1022 Garca 412 101-07 143-01 159-02
4123 Daz 216 201-01 211-02 214-01
2. Primera forma normal: no hay grupos repetidos.
Las tablas slo deben tener dos dimensiones. Puesto que un alumno
tiene varias clases, estas clases deben aparecer en una tabla
independiente. Los campos Clase1, Clase2 y Clase3 de los registros
anteriores son indicativos de un problema de diseo.
Las hojas de clculo suelen usar la tercera dimensin, pero las tablas no
deberan hacerlo. Otra forma de considerar ese problema es con una
relacin de uno a varios y poner el lado de uno y el lado de varios en
tablas distintas. En su lugar, cree otra tabla en la primera forma normal
eliminando el grupo repetido (N clase), segn se muestra a
continuacin:
N alumno Tutor Despacho-Tut N clase
1022 Garca 412 101-07
1022 Garca 412 143-01
1022 Garca 412 159-02
4123 Daz 216 201-01
4123 Daz 216 211-02
4123 Daz 216 214-01
-
Taller de Base de Datos
Normalizacin de Base de Datos
54
3. Segunda forma normal: eliminar los datos redundantes.
Observe los diversos valores de N clase para cada valor de N alumno
en la tabla anterior. N clase no depende funcionalmente de N alumno (la
clave principal), de modo que la relacin no cumple la segunda forma
normal.
Las dos tablas siguientes demuestran la segunda forma normal:
Alumnos:
Registro:
4. Tercera forma normal: eliminar los datos no dependientes de la clave
En el ltimo ejemplo, Despacho-Tut (el nmero de despacho del tutor) es
funcionalmente dependiente del atributo Tutor. La solucin es pasar ese
atributo de la tabla Alumnos a la tabla Personal, segn se muestra a
continuacin:
Alumnos: Personal:
N alumno Tutor Despacho-Tut
1022 Garca 412
4123 Daz 216
N alumno N clase
1022 101-07
1022 143-01
1022 159-02
4123 201-01
4123 211-02
4123 214-01
Nombre Habitacin Dept
Garca 412 42
Daz 216 42
N alumno Tutor
1022 Garca
4123 Daz
-
Taller de Base de Datos
Normalizacin de Base de Datos
55
EJEMPLO APLICANDO LOS PASOS DE NORMALIZACION DE LA 1FN
HASTA LA 4FN
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 Titulo Autor Editorial NombreLector FechaDev
1001 Variable compleja Murray Spiegel McGraw Hill Prez Gmez, Juan 15/04/2005
1004 Visual Basic 5 E. Petroustsos Anaya Ros Tern, Ana 17/04/2005
1005 Estadstica Murray Spiegel McGraw Hill Roca, Ren 16/04/2005
1006 Oracle University Nancy Greenberg
y Priya Nathan Oracle Corp. Garca Roque, Luis 20/04/2005
1007 Clipper 5.01 Ramalho McGraw Hill Prez Gmez, Juan 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.
1NF
CodLibro Titulo Autor Editorial Paterno Materno Nombres FechaDev
1001 Variable
compleja Murray Spiegel McGraw Hill Prez Gmez Juan 15/04/2005
1004 Visual Basic 5 E. Petroustsos Anaya Ros Tern Ana 17/04/2005
1005 Estadstica Murray Spiegel McGraw Hill Roca
Ren 16/04/2005
1006 OracleUniversity NancyGreenberg Oracle Corp. Garca Roque Luis 20/04/2005
1006 OracleUniversity Priya Nathan Oracle Corp. Garca Roque Luis 20/04/2005
1007 Clipper 5.01 Ramalho McGraw Hill Prez Gmez Juan 18/04/2005
-
Taller de Base de Datos
Normalizacin de Base de Datos
56
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
CodLibro Titulo Autor Editorial
1001 Variable compleja Murray Spiegel McGraw Hill
1004 Visual Basic 5 E. Petroustsos Anaya
1005 Estadstica Murray Spiegel McGraw Hill
1006 Oracle University NancyGreenberg Oracle Corp.
1006 Oracle University Priya Nathan Oracle Corp.
1007 Clipper 5.01 Ramalho McGraw Hill
La nueva tabla slo contendr datos del lector.
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
CodLector Paterno Materno Nombres
501 Prez Gmez Juan
502 Ros Tern Ana
503 Roca
Ren
504 Garca Roque Luis
-
Taller de Base de Datos
Normalizacin de Base de Datos
57
tabla para mantener la informacin de qu libros estn prestados a qu
lectores. Esta tabla se muestra a continuacin:
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
CodLibro CodLector FechaDev
1001 501 15/04/2005
1004 502 17/04/2005
1005 503 16/04/2005
1006 504 20/04/2005
1007 501 18/04/2005
-
Taller de Base de Datos
Normalizacin de Base de Datos
58
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 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 codAutor
1001 801
1004 802
1005 801
1006 803
1006 804
1007 806
CodLibro codEditorial
1001 901
1004 902
1005 901
1006 903
1007 901
-
Taller de Base de Datos
Normalizacin de Base de Datos
59
Y el resto de las tablas no necesitan modificacin.
CodLector Paterno Materno Nombres
501 Prez Gmez Juan
502 Ros Tern Ana
503 Roca Ren
504 Garca Roque Luis
CodLibro CodLector FechaDev
1001 501 15/04/2005
1004 502 17/04/2005
1005 503 16/04/2005
1006 504 20/04/2005
1007 501 18/04/2005