Normalizacion de base de datos
-
Upload
john-paul-llanos-dominguez -
Category
Engineering
-
view
72 -
download
0
Transcript of Normalizacion de base de datos
[Introducir aquí título de la entrada del blog]
NORMALIZACIÓN DE BASE DE DATOSEscrito 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, acceso rá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 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:
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 Num_art Nom_art Cant Precio
1301 18/03/2015 201 John Lima 3786 Teclado 3 35.00
1301 18/03/2015 201 John Lima 4011 Disco duro 6 65.00
1301 18/03/2015 201 John Lima 9132 Monitor 10" 8 4.75
1302 20/03/2015 207 Ida Cuzco 5794 Monitor 15" 4 5.00
1303 22/03/2015 210 Delia Pasco 4011 Disco duro 2 65.00
1303 22/03/2015 210 Delia Pasco 3141 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
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
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)
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 llave de 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
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)