Vous êtes sur la page 1sur 64

10/8/2017 6:01 p.m.

1
Normalizacin
La normalizacin es el proceso de organizar los
datos en una base de datos, con el objetivo de hacer
mas eficientes las relaciones entre los objetos que
componen la base de datos.
Esto incluye el diseo y creacin de tablas y de
manera muy especial en como se establecern
relaciones entre aquellas tablas, segn reglas
diseadas para proteger los datos y hacer que la
base de datos sea ms flexible al eliminar
redundancia y dependencia incoherente.
10/8/2017 6:01 p.m. 2
La normalizacin es el proceso mediante el cual se
transforman datos complejos a un conjunto de estructuras
de datos ms pequeas, que adems de ser ms simples y
ms estables, son ms fciles de mantener.
Tambin se puede entender la normalizacin como una
serie de reglas que sirven para ayudar a los diseadores de
bases de datos a desarrollar un esquema que minimice los
problemas de lgica.

10/8/2017 6:01 p.m. 3


Tambin puede ser definida como el proceso de
evaluar y corregir estructuras de tablas a fin de
minimizar redundancias de datos, con lo cual se
reduce la probabilidad de anomalas en los datos
Coronel/Morris/Rob.

10/8/2017 6:01 p.m. 4


Nota:
Aun cuando el termino tabla se use muy frecuentemente en este
tema, formalmente, la normalizacin se refiere a relaciones. Es
muy frecuente que los trminos tabla y relacin se usen
indistintamente. De hecho podemos decir que la tabla es la vista
de la implementacin de una relacin lgica que satisface algunas
condiciones especificas.
Siendo mas rigurosos el concepto de relacin matemtica no
permite tuplas duplicadas, mientras en que una tabla si pueden
existir.
En terminologa de normalizacin, cualquier atributo que sea al
menos parte de una llave se conoce como atributo primo en
lugar del termino mas comn de atributo llave.
Coronel/Morris/Rob.

10/8/2017 6:01 p.m. 5


Que es dependencia incoherente?
Las dependencias incoherentes pueden dificultar el acceso
a los datos, ya que la ruta de acceso a los mismos puede
estar rota o no encontrarse bien definida.

10/8/2017 6:01 p.m. 6


Dependencia funcional
El atributo B es funcionalmente dependiente en forma
completa en el atributo A si cada valor de A determina
un valor de B y solo uno.
Ej.
Mat_Est -> Nom_Est.
En este caso Mat_est se conoce como atributo
determinante y Nom_Est como atributo dependiente.

10/8/2017 6:01 p.m. 7


Dependencia funcional,
Definicin generalizada.
El atributo A determina al atributo B (esto es, B es
funcionalmente dependiente de A), si todos los
renglones de la tabla que concuerdan en valor para el
atributo A tambien concuerdan en valor con el
atributo B.

10/8/2017 6:01 p.m. 8


Dependencia funcional,
Compuesta.
Si el atributo B es funcionalmente dependiente de una
llave compuesta A, pero no de ningn subconjunto de
ella, el atributo B es funcionalmente dependiente en
forma completa de A.

10/8/2017 6:01 p.m. 9


Eje.
Aunque para un usuario puede resultar intuitivo
buscar la direccin de un determinado cliente en la
tabla Clientes, es posible que no tenga sentido
buscar en esa misma tabla el sueldo del empleado
que atiende a dicho cliente. El salario del
empleado est relacionado con el empleado (es
decir, existe una dependencia entre ambos), por lo
que debe moverse a la tabla Empleados.

10/8/2017 6:01 p.m. 10


Por que normalizar?
Los datos redundantes desperdician espacio en
disco y crean problemas de mantenimiento. Si es
necesario cambiar datos que aparecen en ms de
un sitio, el cambio deber ser exactamente igual en
todos estos sitios. Por ejemplo, un cambio de
direccin de un cliente es mucho ms fcil de
implementar si los datos slo se almacenan en la
tabla Clientes y en ningn otro lugar de la base de
datos.

10/8/2017 6:01 p.m. 11


La normalizacin se adopt porque el viejo estilo de
poner todos los datos en un solo lugar, como un
archivo o una tabla de la base de datos, era ineficiente y
conduca a errores de lgica cuando se trataban de
manipular los datos.
La normalizacin tambin hace las cosas fciles de
entender. Los seres humanos tenemos la tendencia de
simplificar las cosas al mximo.
Las guas que la normalizacin provee crean el marco
de referencia para simplificar una estructura de datos
compleja.

10/8/2017 6:01 p.m. 12


Otra ventaja de la normalizacin de base de datos es el
consumo de espacio. Una base de datos normalizada
ocupa menos espacio en disco que una no
normalizada. Hay menos repeticin de datos, lo que
tiene como consecuencia un mucho menor uso de
espacio en disco.

10/8/2017 6:01 p.m. 13


Ejemplo:
Pedidos
No_Pedido
Id_cliente
Nombre
Apellidos
Nombre_Producto1
Costo_Producto1
Imagen_Producto1
Nombre_Producto2
Costo_Producto2
Imagen_Producto2
Nombre_Producto3
Costo_Producto3
Imagen_Producto3
Fecha_Pedido
direccion_Pedido
Nombre_Cia_Envios
10/8/2017 6:01 p.m. 14
Problemas con esta tabla?
Cmo podra aadir un nuevo cliente en su tabla
Clientes?
Debera aadir un producto y un pedido tambin?.
Qu tal si quisiera emitir un informe de todos los
productos que vende?

10/8/2017 6:01 p.m. 15


Formas normales.
Son las tcnicas para prevenir las anomalas en las
tablas. Dependiendo de su estructura, una tabla puede
estar en primera forma normal, segunda forma normal
o en cualquier otra.

10/8/2017 6:01 p.m. 16


Existen unas cuantas reglas para la normalizacin de
bases de datos. Cada regla se denomina "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, se considera que la
base de datos est en la "tercera forma normal"
Aunque existen otros niveles de normalizacin, se
considera que la tercera forma normal es el mximo
nivel necesario para la mayora de las aplicaciones.

10/8/2017 6:01 p.m. 17


Grados de normalizacin
Existen bsicamente tres niveles de normalizacin:
Primera Forma Normal (1NF)
Segunda Forma Normal (2NF)
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.

10/8/2017 6:01 p.m. 18


Nota:
No siempre es una buena idea tener una base de datos
desenada en el nivel ms alto de normalizacin. Esto
puede llevar aun nivel de complejidad en las estructuras
de datos, que pudiera ser evitado si estuviramos en un
nivel ms bajo de normalizacin.
Esta es la razn por la que se considera que la tercera
forma normal es el mximo nivel necesario para la
mayora de las aplicaciones que interactan con BD.

10/8/2017 6:01 p.m. 19


Relacin entre las formas normales:

10/8/2017 6:01 p.m. 20


Primera forma normal.
Una relacin R se encuentra en 1FN si y solo s por cada
rengln columna contiene valores atmicos.
Abreviada como 1FN, se considera que una relacin se
encuentra en la primera forma normal cuando cumple
lo siguiente:

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 o atributo
deben ser del mismo tipo.
Todos los registros son de longitud fija.

10/8/2017 6:01 p.m. 21


En otras palabras:
1. Eliminar grupos repetidos en tablas individuales.
2. Crear una tabla diferente para cada conjunto de datos
relacionados.
3. Identificar cada conjunto de datos relacionados mediante
una clave principal.
4. No utilizar varios campos en una nica tabla para almacenar
datos similares.
5. Cada columna debe tener un nombre nico, el orden de las
columnas en la tabla no es importante.
6. Dos filas o renglones de una misma tabla no deben ser
idnticas, aunque el orden de las filas no es importante.
10/8/2017 6:01 p.m. 22
Ejemplo:
Suponga que tenemos la siguiente estructura de datos:
Tabla artculos:
numero_articulo
descripcion_articulo
precio_articulo
Pero ademas necesitamos la informacion de los
proveedores que nos suplen estos articulos, en este
caso, podemos tener mas de un solo proveedor, lo que
nos lleva a una estructura de la siguiente manera:

10/8/2017 6:01 p.m. 23


Estructura 2
Estructura 1
numero_articulo numero_articulo
descripcion_articulo descripcion_articulo
precio_articulo precio_articulo
proveedor_1 proveedor
proveedor_2
proveedor_3
proveedor_4
.
proveedor_n

10/8/2017 6:01 p.m. 24


Otros problemas potenciales?
Que sucede si tenemos que agregar otro proveedor???
Que sucede si tenemos un inventario de 1,000 artculos
o mas??
Que sucede si un mismo articulo puede ser suplido por
10 proveedores?? O mas???
Como podemos establecer una clave primaria que sea
lo suficientemente fuerte como para identificarme de
manera univoca las tuplas en esta relacin???
Entre otras preguntas que podran salir

10/8/2017 6:01 p.m. 25


Problemas con bases de datos que
no estn en 1FN
Redundancias
Posibles inconsistencias
Imposibilidad de almacenar ciertas informaciones
Necesidad de valores nulos

10/8/2017 6:01 p.m. 26


Solucin?
Para este sencillo problema lo que haremos es crear
dos tablas, una de artculos y otra de proveedores y de
esa manera, resolvemos el problema:

10/8/2017 6:01 p.m. 27


Ejemplo:
ID_ORDEN
FECHA
ID_CLIENTE
NOM_CLIENTE
ESTADO
NUM_ITEM
DESC_ITEM
CANT
PRECIO
10/8/2017 6:01 p.m. 28
Si la vemos con datos:

Al examinar estos registros, podemos darnos cuenta


que contienen un grupo repetido para:
NUM_ITEM,DESC_ITEM, CANT y PRECIO.

10/8/2017 6:01 p.m. 29


Solucin?
La 1FN prohbe los grupos repetidos, por lo tanto tenemos
que convertir a la primera forma normal. Los pasos a
seguir son:
Tenemos que eliminar los grupos repetidos.
Tenemos que crear una nueva tabla con la PK de la tabla base y el
grupo repetido.

10/8/2017 6:01 p.m. 30


Solucin
Los registros quedan ahora conformados en dos tablas que llamaremos ORDENES
y ARTICULOS_ORDENES

10/8/2017 6:01 p.m. 31


Segunda forma normal 2FN
La regla de la Segunda Forma Normal establece que
todas las dependencias parciales se deben eliminar y
separar dentro de sus propias tablas. Una dependencia
parcial es un trmino que describe a aquellos datos que
no dependen de la llave primaria de la tabla para
identificarlos.
Una vez alcanzado el nivel de la Segunda Forma Normal,
se controlan la mayora de los problemas de lgica.
Podemos insertar un registro sin un exceso de datos en la
mayora de las tablas.

10/8/2017 6:01 p.m. 32


Una relacin R est en 2FN si y solo si est en 1FN y
los atributos no primos dependen funcionalmente
de la llave primaria.
Una relacin se encuentra en segunda forma
normal, cuando cumple con las reglas de la
primera forma normal y todos sus atributos que no
son claves (llaves) dependen por completo de la
clave primaria. De acuerdo con est definicin,
cada tabla que tiene un atributo nico como clave,
esta en segunda forma normal.

10/8/2017 6:01 p.m. 33


Problemas relacionados con un
modelo que no esta en 2FN
Redundancia de datos
Necesidad de actualizacin en cadena
Posible inconsistencia de datos en las actualizaciones.
Imposibilidad de almacenar ciertos datos

10/8/2017 6:01 p.m. 34


Solucion 2FN
Ahora procederemos a aplicar la segunda formal normal,
es decir, tenemos que eliminar cualquier columna no
llave que no dependa de la llave primaria de la tabla. Los
pasos a seguir son:
Determinar cules columnas que no son llave no dependen
de la llave primaria de la tabla.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y la(s)
columna(s) de la PK de la cual dependen.

10/8/2017 6:01 p.m. 35


La tabla ORDENES est en 2FN. Cualquier valor nico
de ID_ORDEN determina un slo valor para cada
columna. Por lo tanto, todas las columnas son
dependientes de la llave primaria ID_ORDEN.

10/8/2017 6:01 p.m. 36


Por su parte, la tabla ARTICULOS_ORDENES no se
encuentra en 2FN ya que las columnas PRECIO y
DESC_ITEM son dependientes de NUM_ITEM, pero
no son dependientes de ID_ORDEN. Lo que haremos a
continuacin es eliminar estas columnas de la tabla
ARTICULOS_ORDENES y crear una tabla
ARTICULOS con dichas columnas y la llave primaria
de la que dependen.

10/8/2017 6:01 p.m. 37


10/8/2017 6:01 p.m. 38
Tercera forma normal 3FN
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. Una dependencia
transitiva es aquella en la cual existen columnas que no
son llave que dependen de otras columnas que
tampoco son llave.

10/8/2017 6:01 p.m. 39


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.

10/8/2017 6:01 p.m. 40


En otras palabras, la regla de la Tercera Forma Normal
seala que hay que eliminar y separar cualquier dato
que no sea clave. El valor de esta columna debe
depender de la clave. Todos los valores deben
identificarse nicamente por la clave.

10/8/2017 6:01 p.m. 41


Al observar las tablas que hemos creado, nos damos
cuenta que tanto la tabla ARTICULOS, como la tabla
ARTICULOS_ORDENES se encuentran en 3FN. Sin
embargo la tabla ORDENES no lo est, ya que
NOM_CLIENTE y ESTADO son dependientes de
ID_CLIENTE, y esta columna no es la llave primaria.
Para normalizar esta tabla, moveremos las columnas
no llave y la columna llave de la cual dependen dentro
de una nueva tabla CLIENTES. Las nuevas tablas
CLIENTES y ORDENES se muestran a continuacin.

10/8/2017 6:01 p.m. 42


La tercera forma normal nos dice que tenemos que
eliminar cualquier columna no llave que sea
dependiente de otra columna no llave. Los pasos a
seguir son:
Determinar las columnas que son dependientes de
otra columna no llave.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y con la
columna no llave de la cual son dependientes.

10/8/2017 6:01 p.m. 43


Para normalizar esta tabla, moveremos las columnas
no llave y la columna llave de la cual dependen dentro
de una nueva tabla CLIENTES.

10/8/2017 6:01 p.m. 44


10/8/2017 6:01 p.m. 45
Eliminar los campos que no dependan de la clave.
Los valores de un registro que no forman parte de
la clave de dicho registro no pertenecen a esa tabla.
En general, siempre que el contenido de un grupo
de campos se puede aplicar a ms de un registro de
la tabla, debe tener en cuenta la posibilidad de
incluir dichos campos en una tabla independiente.

10/8/2017 6:01 p.m. 46


EXCEPCIN: No es prctico siempre cumplir la forma
tercera normal tericamente conveniente. Si tiene una tabla
Clientes y desea eliminar todas las posibles dependencias
entre campos, debe crear tablas independientes para
ciudades, cdigos postales, representantes de ventas, clases
de clientes y cualquier otro factor que pueda aparecer
duplicado en varios registros. En teora, la normalizacin
merece la pena. Sin embargo, la utilizacin de un gran
nmero de tablas pequeas puede perjudicar el rendimiento
o superar la capacidad de memoria y de archivos abiertos del
sistema.

10/8/2017 6:01 p.m. 47


Ejemplo practico.
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.

10/8/2017 6:01 p.m. 48


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.
10/8/2017 6:01 p.m. 49
Primera Forma Normal, 1FN

Como se puede ver, hay cierta redundancia caracterstica de 1NF.

10/8/2017 6:01 p.m. 50


Problemas?
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.

10/8/2017 6:01 p.m. 51


Aplicacin 2FN
Tabla de libros.

10/8/2017 6:01 p.m. 52


Tabla de lectores.

10/8/2017 6:01 p.m. 53


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:

10/8/2017 6:01 p.m. 54


Tabla de prestamos.

10/8/2017 6:01 p.m. 55


Tercera Forma normal
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.

10/8/2017 6:01 p.m. 56


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.
Tabla de libros.

10/8/2017 6:01 p.m. 57


Tabla de autores. Tabla de editoriales.

10/8/2017 6:01 p.m. 58


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.

10/8/2017 6:01 p.m. 59


Tabla de autores-libros. Tabla de editoriales-libros.

10/8/2017 6:01 p.m. 60


Ejemplo

10/8/2017 6:01 p.m. 61


Problemas:

1. Redundancia de datos
2. Anomalas de modificacin de datos
3. Anomalas al insertar de datos
4. Anomalas de borrados de datos

10/8/2017 6:01 p.m. 62


Formas normales(FN): conjunto de restricciones sobre
tablas que evitan problemas de redundancia y
anomalias de modificacin, insercin y borrado de
datos.

10/8/2017 6:01 p.m. 63


10/8/2017 6:01 p.m. 64