Base de Datos I
Ing. Alejandro Colman
Normalización
Es aplicar técnicas a una base de datos relacional con la finalidad de minimizar la
inclusión de informaciones con duplicidad.
La normalización es el proceso de organizar datos en una base de datos. Esto
incluye la creación de tablas y el establecimiento de relaciones entre esas tablas de
acuerdo con las reglas diseñadas tanto para proteger los datos como para que la
base de datos sea más flexible mediante la eliminación de la redundancia y la
dependencia incoherente.
Los datos redundantes desperdician espacio en disco y crean problemas de
mantenimiento.
Ing. Alejandro Colman
Objetivos de la normalización de base de datos
Corregir datos duplicados y anomalías en la base de datos.
Evitar la creación y actualización de relaciones y dependencias no deseadas entre
datos.
Prevenir borrados indeseados de datos.
Optimizar el espacio de almacenamiento.
Reducir el tiempo y complejidad de revisión de las bases de datos cuando es
necesario introducir nuevos tipos de datos.
Facilitar el acceso e interpretación de los datos a los usuarios y aplicaciones que los
usan.
Ing. Alejandro Colman
Requisitos de la normalización
Para que las tablas de nuestra BD estén normalizadas deben cumplir las
siguientes reglas:
Cada tabla debe tener su nombre único.
No puede haber dos filas iguales.
No se permiten los duplicados.
Todos los datos en una columna deben ser del mismo tipo.
Ing. Alejandro Colman
Los beneficios de la normalización de bases
de datos
Mapa lógico
El almacenamiento y mapeo de datos es más lógico y, por tanto,
redobla su utilidad para los departamentos que empleen las tablas.
Normalizar datos de producto hace que la información se organice y
guarde siempre en su lugar correspondiente, sin duplicados ni
versiones desactualizadas.
Ing. Alejandro Colman
Consistencia de datos
Se incrementa la fiabilidad de los datos para todos los implicados que
acceden a las bases, y hay mayor consistencia en la información
almacenada. Se evita guardar versiones desactualizadas, encontrar
datos duplicados en diferentes partes de la empresa y distintos tipos de
relaciones entre datos de producto, sin una jerarquía clara.
Ing. Alejandro Colman
Relación de datos sólida
La principal ventaja de normalizar datos, aparte de la eliminación de
redundancias, es el diseño de una integridad de datos que muestra
claramente cómo se relaciona información de distintas tablas entre sí.
Esto facilita la identificación de las relaciones de datos y corrige
cualquier aislamiento o inconsistencia de información que pudiese
haber en la base de datos de producto.
Ing. Alejandro Colman
Mayor seguridad
Se incrementa la seguridad, ya que la normalización hace que los datos
tengan una localización más precisa.
Ahorro de costes
Es mucho más sencillo mantener las bases de datos que ya tienes y
realizar nuevos añadidos. También es más rápido conectar las fuentes de
datos a cualquier sistema interno o externo, pues no serán necesarias
revisiones para asegurar que los datos enviados son correctos.
Ing. Alejandro Colman
Reglas o niveles de normalización
Para normalizar una base de datos existen principalmente 3 reglas, las
cuales se deberían cumplir para evitar redundancias e incoherencias en
las dependencias. A estas reglas se les conoce como "Forma
normal" qué va de la 1 a la 3 y si la base de datos cumple con cada regla
se dice que está en la "primera o segunda o tercera forma normal"
“Aunque son posibles otros niveles de normalización, la tercera forma
normal se considera el máximo nivel necesario para la mayoría de las
aplicaciones.”
Ing. Alejandro Colman
Primera forma normal (1FN)
Un archivo esta en primera forma normal (1FN) si no posee campos
multivalorados.
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.
No utilice varios campos en una sola tabla para almacenar datos
similares
Ing. Alejandro Colman
Segunda forma normal (2FN)
Un archivo en primera forma normal esta en segunda forma normal,
si todo campo no clave depende de la totalidad de la clave.
Cree tablas independientes para conjuntos de valores que se
apliquen a varios registros.
Relacione estas tablas con una clave externa.
Ing. Alejandro Colman
Tercera forma normal (3FN)
Un archivo esta en tercera forma normal si ningún campo no clave no
depende de otro campo no clave.
Elimine los campos que no dependan de la clave.
Cada nivel de normalización exige cierta complejidad, pero debes
analizar si en realidad necesitas llegar hasta la tercera forma normal,
debes buscar lo que mejor se adapte a la empresa.
Ing. Alejandro Colman
EJEMPLO DE NORMALIZACIÓN
Ing. Alejandro Colman
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.
CodLibro Titulo Autor editorial NombreLector FechaDev
Variable Pérez Gómez,
1001 Murray Spiegel McGraw Hill 15/04/2014
Compleja Juan
1004 Visual Basic E. Petroustsos Anaya Ríos Terán, Ana 17/04/2014
1005 Estadística Murray Spiegel McGraw Hill Roca, René 16/04/2014
Oracle Nancy Greenberg y Priya García Roque,
1006 Oracle Corp. 20/04/2014
University Nathan Luis
Pérez Gómez,
1007 Clipper 5.01 Ramalho McGraw Hill 18/04/2014
Juan
Esta tabla no cumple el requisito de la Primera Forma Normal (1FN) de
sólo tener campos atómicos, 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.
Ing. Alejandro Colman
1FN
CodLibro Titulo Autor editorial Paterno Materno Nombres FechaDev
1001 Variable compleja Murray Spiegel McGraw Hill Pérez Gómez Juan 15/04/2014
1004 Visual Basic 5 E. Petroustsos Anaya Ríos Terán Ana 17/04/2014
1005 Estadística Murray Spiegel McGraw Hill Roca René 16/04/2014
1006 Oracle University NancyGreenberg Oracle Corp. García Roque Luis 20/04/2014
1006 Oracle University Priya Nathan Oracle Corp. García Roque Luis 20/04/2014
1007 Clipper 5.01 Ramalho McGraw Hill Pérez Gómez Juan 18/04/2014
Como se puede ver, hay cierta redundancia característica de 1FN.
Ing. Alejandro Colman
La Segunda Forma Normal (2FN) 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.
Ing. Alejandro Colman
2FN
CodLibro Titulo Autor Editorial
1001 Variable compleja Murray Spiegel McGraw Hil
1004 Visual Basic 5 E. Petroustsos Anaya
1005 Estadística 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 sólo contendrá datos del lector.
Lector
CodLector Paterno Materno Nombres
501 Pérez Gómez Juan
502 Ríos Terán Ana
503 Roca René
504 García Roque Luis
Ing. Alejandro Colman
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:
Libro_lector
CodLibro CodLector FechaDev
1001 501 15/04/2014
1004 502 17/04/2014
1005 503 16/04/2014
1006 504 20/04/2014
1007 501 18/04/2014
Ing. Alejandro Colman
Para la Tercera Forma Normal (3FN) la relación debe estar en 2FN 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 2FN, 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 3FN.
Ing. Alejandro Colman
3FN
Libro
CodLibro Titulo
Editorial
Autor CodEditorial Editorial
1001 Variable compleja
CodAutor Autor
901 McGraw Hill
1004 Visual Basic 5
801 Murray Spiegel
902 Anaya
1005 Estadística
802 E. Petroustsos
903 Oracle Corp
1006 Oracle University
803 Nancy Greenberg
1007 Clipper 5.01
804 Priya Nathan
806 Ramalho
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.
Ing. Alejandro Colman
Libro_editorial Libro_autor
CodLibro codEditorial CodLibro codAutor
1001 901 1001 801
1004 802
1004 902
1005 801
1005 901
1006 803
1006 903
1006 804
1007 901
1007 806
Y el resto de las tablas no necesitan
modificación.
Lector Libro_lector
CodLibro CodLector FechaDev
CodLector Paterno Materno Nombres
1001 501 15/04/2014
501 Pérez Gómez Juan
1004 502 17/04/2014
502 Ríos Terán Ana
1005 503 16/04/2014
503 Roca René
1006 504 20/04/2014
504 García Roque Luis 1007 501 18/04/2014
Ing. Alejandro Colman