El documento explica el proceso de normalización de bases de datos, incluyendo las primeras, segunda y tercera formas normales. Aplica estas formas normales a un ejemplo de una base de datos de órdenes para transformarla de una forma no normalizada a una estructura normalizada con varias tablas relacionadas.
1. [Introducir aquí título de la entrada del blog]
NORMALIZACIÓN DE BASE
DE DATOS
Escrito por Jllanosd el 20-03-2015 en Ingeniería de Sistemas.. Comentarios (0)
¿Qué aprenderé hoy?
A conceptualizar términos relacionados a la
normalización de base de datos
A desarrollar el proceso de normalización de
una base de datos.
A resolver problemas que involucren la
normalización de una base de datos.
A valorar la importancia de aprender base de
datos como parte de nuestra formación
profesional.
Cada punto mencionado es de suma importancia en el
objetivo de realizar una adecuada normalización
siguiendo las normas de estas.
NORMALIZACIÓN
Como es de conocimiento una base de datos tiene que
ser diseñada antes de que pueda ser creada y usada. El
diseño debe ajustarse a estándares que permitan ahorro
de memoria, accesorápido, fácil mantenimiento,
portabilidad, facilidad de futuros mejoramientos, buen
desempeño y eficiencia de costos, entre muchos otros.
El diseño lógico final de una base de datos debe ser tal
que equilibre un desempeño óptimo junto con la integridad
2. de la información. Esto puede ser logrado a través de un
proceso conocido como Normalización. La base de datos
debe estar en un estado de "Forma completamente
normalizada".
Entonces también podemos indicar que la normalización
es una serie de reglas que involucran análisis y
transformación únicas de consistencia, mínima
redundancia y máxima estabilidad.
Formas Normales
1. Primera Forma Normal:
Eliminar los grupos repetidos de las tablas
individuales.
Crear una tabla independiente para cada
conjunto de datos relacionados.
Identificar cada conjunto de datos
relacionados con una clave principal.
2. Segunda Forma Normal:
Crear tablas independientes para conjuntos
de valores que se apliquen a varios registros.
Relacionar estas tablas con una clave
externa.
3. Tercer Forma Normal:
Eliminar los campos que no dependan de la
clave.
4. Otras formas de normalización:
3. La cuarta forma normal, también llamada
Forma Normal de Boyce Codd (BCNF, Boyce
Codd Normal Form).
La quinta forma normal existen, pero rara vez
se consideran en un diseño real. Si no se
aplican estas reglas, el diseño de la base de
datos puede ser menos perfecto, pero no
debería afectar a la funcionalidad.
Veamos un ejercicio de Normalización:
1. Un dato sin normalizar no cumple con ninguna regla de
normalización. Para explicar con un ejemplo en qué
consiste cada una de las reglas, vamos a considerar los
datos de la siguiente tabla.
ordenes (id_orden, fecha, id_cliente, nom_cliente, estado,
num_art, cant, precio)
Ordenes
Id_orden Fecha Id_cliente Nom_cliente Ciudad Nu
m_art Nom_art Cant Precio
1301 18/03/2015 201 John Lima 37
86 Teclado 3 35.00
1301 18/03/2015 201 John Lima 4
011 Disco duro 6 65.00
1301 18/03/2015 201 John Lima 9
132 Monitor 10" 8 4.75
1302 20/03/2015 207 Ida Cuzco 57
94 Monitor 15" 4 5.00
4. 1303 22/03/2015 210 Delia Pasco 4
011 Disco duro 2 65.00
1303 22/03/2015 210 Delia Pasco 3
141 Mouse 2 10.00
PRIMERA FORMA NORMAL (1FN)
Al examinar estos registros, podemos darnos cuenta que
contienen un grupo repetido para Num_art, Nom_art, Cant
y Precio. La Primera forma Normal prohíbe que los grupos
repetidos, por lo tanto tenemos que convertir a la primera
forma normal. Los pasos a seguir son:
Tenemos que eliminar los grupos repetitivos
Tenemos que crear una nueva tabla con la
PK (llave primaria) de la tabla base y el grupo
repetido.
Los registros quedan ahora conformados en dos tablas
que llamaremos Ordenes y Articulos_ordenes.
Ordenes (id_orden, fecha, id_cliente, nom_cliente, ciudad)
Articulos_ordenes (id_orden, num_art, nom_art, cant,
precio)
Ordenes
Id_orden Fecha Id_cliente Nom_cliente Ciudad
1301 18/03/2015 201 John Lima
1302 20/03/2015 207 Ida Cuzco
1303 22/03/2015 210 Delia Pasco
Articulos_ordenes
5. Id_orden Num_art Nom_art Cant Precio
1301 3786 Teclado 3 35.00
1301 4011 Disco duro 6 65.00
1301 9132 Monitor 10" 8 4.75
1302 5794 Monitor 15" 4 5.00
1303 4011 Disco duro 2 65.00
1303 3141 Mouse 2 10.00
SEGUNDA FORMA NORMAL (2FN)
Ahora procederemos a aplicar la segunda forma 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 cuáles 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 las columnas de la PK (llave primaria) de la
cual dependen.
La tabla Ordenes está en 2da Forma Normal. Cualquier
valor único de Id_orden determina un sólo valor para cada
columna. Por lo tanto, todas las columnas son
dependientes de la llave primaria Id_orden.
Por su parte, la tabla Articulos_ordenes no se encuentra
en 2da Forma Normal, ya que las columnas Precio y
Nom_art son dependientes de Num_art, pero no son
dependientes de Id_orden. Lo que haremos a
6. continuación 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.
las tablas quedan ahora de la siguiente manera.
Articulos_ordenes(id_orden, num_art, cant)
Articulos_ordenes
Id_orden Num_art Cant
1301 3786 3
1301 4011 6
1301 9132 8
1302 5794 4
1303 4011 2
1303 3141 2
Articulos (num_art, nom_art, precio)
Articulos
Num_art Nom_art Precio
3786 Teclado 35.00
4011 Disco duro 65.00
9132 Monitor 10" 4.75
5794 Monitor 15" 5.00
3141 Mouse 10.00
TERCERA FORMA NORMAL (3FN)
7. La tercer 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.
Al observar las tablas que hemos creado, nos damos
cuenta que tanto la tabla Articulos, como la tabla
Articulos_ordenes se encuentran en 3era forma normal.
Sin embargo la tabla Ordenes no lo está, ya que
Nom_cliente Y Ciudad 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 llavede la cual dependen dentro de
una nueva tabla Clientes. Las nuevas tablas Clientes y
Ordenes se muestran a continuación.
Ordenes
Id_orden Fecha Id_cliente
1301 18/03/2015 201
1302 20/03/2015 207
1303 22/03/2015 210
Cliente (id_cliente, nom_cliente, Ciudad)
Ordenes
8. Id_cliente Nom_cliente Ciudad
201 John Lima
207 Ida Cuzco
210 Delia Pasco
Por lo tanto la base de datos quedará de la siguiente
manera:
Ordenes (id_orden, fecha, id_cliente)
Clientes (id_cliente, nom_cliente, ciudad)
Articulos (num_art, nom_art, precio)
Articulos_ordenes(id_orden, num_art, cant)