UNIVERSIDAD YACAMBU
ESPECIALIZACION GERENCIA MENCION REDES Y TELECOMUNICACIONES
ANALISIS Y DISENO DE SISTEMAS
FORO. NORMALIZACION BASE DE DATOS
ING. CESAR R. GAVIDIA R.
Qué es la normalización
Normalización
es un conjunto de reglas que sirven para ayudar a los diseñadores
a desarrollar un esquema que minimice los problemas de lógica.
Cada regla está basada en la que le antecede. La normalización
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 conducía a errores de lógica cuando se
trataba de manipular los datos. Por ejemplo, vea la base de datos
MiTienda. Si almacena todos los datos en la tabla Clientes, ésta
podría verse como se muestra a continuación:
Clientes
ID_Cliente Nombre
Apellidos
Nombre_Producto1 Costo_Producto1
Imagen_Producto1
Nombre_Producto2 Costo_Producto2
Imagen_Producto2 Fecha_Pedido
Cantidad_Pedido
Nombre_Cia_Envios
La tabla se ha descrito de manera abreviada pero aun así representa la idea general.
¿Cómo
podría añadir un nuevo cliente en su tabla Clientes?
Debería añadir un producto y un pedido también.
¿Qué tal si quisiera emitir un informe de todos los
productos que vende? No podría separar fácilmente los
productos de los clientes con una simple instrucción SQL. Lo
bello de las bases de datos relacionales, si están bien
diseñadas, es que puede hacer esto fácilmente.
La normalización también hace las cosas fáciles de entender. Los seres humanos tenemos la tendencia de simplificar las cosas al máximo. Lo hacemos con casi todo desde los animales hasta con los automóviles. Vemos una imagen de gran tamaño y la hacemos menos compleja agrupando cosas similares juntas. Las guías que la normalización provee crean el marco de referencia para simplificar la estructura. En su base de datos de muestra es fácil detectar que usted tiene tres diferentes grupos: clientes, productos y pedidos. Si sigue las guías de la normalización, podría crear las tablas basándose en estos grupos.
El
proceso de normalización tiene un nombre y una serie de reglas
para cada fase. Esto puede parecer un poco confuso al principio, pero
poco a poco irá entendiendo el proceso, así como las
razones para hacerlo de esta manera. A la mayoría de la gente
le encantan las hojas de cálculo por la forma en la que
manejan sus datos. El tiempo que le lleve reconfigurar su esquema
para ajustarlo al proceso de normalización, siempre será
bien Iinvertido. Al fin y al cabo, esto le tomará menos tiempo
que el que tendría que invertir, para cortar y pegar sus
columnas de datos para generar el infomle que quiere su jefe.
Otra
ventaja de la normalización de su base de datos es el consumo
de espacio. Una base de datos normalizada puede ocupar menos espacio
en disco que una no normalizada. Hay menos repetición de
datos, lo que tiene como consecuencia un mucho menor uso de espacio
en disco.
Grados
de normalización
Existen
básicamente tres niveles de normalización: 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 normalización. Por ejemplo, supongamos que su base de
datos cumple con todas las reglas del segundo nivel de normalización.
Se considera que está en la Segunda Forma Normal. No siempre
es una buena idea tener una base de datos conformada en el nivel más
alto de normalización. Puede llevar aun nivel de complejidad
que pudiera ser evitado si estuviera en un nivel más bajo de
normalización.
Primera Forma Normal
La
regla de la Primera Forma Normal establece que las columnas repetidas
deben eliminarse y colocarse en tablas separadas. Ésta es una
regla muy fácil de seguir. Observe el esquema de la tabla
Clientes de la base de datos.
Clientes
ID
Cliente
Nombre
Apellidos
Nombre_Producto1
Costo_Producto1
Imagen_Producto1
Nombre_Producto2
Costo_Producto2
Imagen_Producto2
Fecha_Pedido
Cantidad_Pedido
Nombre Cia
Envios
--
La tabla tiene varias columnas repetidas. Éstas se
refieren principalmente a los productos. De acuerdo con la regla,
debe eliminar las columnas repetidas y crearles su propia tabla.
Eliminación de datos repetidos en una base de
datos
Clientes
Pedidos
ID_Clientes
Nombre_Productos
Nombre
Costo_Producto
Apellidos
Imagen_Producto
Dirección
Numero_Pedido
Fecha_Pedido
Cantidad_Pedido
Clave_Cia_Envíos
Nombre_Ci_ Envíos
--
Ahora tiene dos tablas. Pero todavía hay un problema.
No hay forma de relacionar los datos de la tabla original con los de
la nueva tabla. Para hacerlo, debe añadir un campo clave a la
segunda tabla de forma que se establezca la relación. Añada
a la tabla Productos una clave primaria que se llame ID_Producto y
añada una clave a la tabla Clientes que la relacione con la
tabla Productos. El campo ID_Producto es el candidato ideal.
Primera
Forma Normal
Clientes
Pedidos
ID_Productos
ID_Productos
ID_Clientes
Nombre_Productos
Nombre
Costo_Producto
Apellidos
Imagen_Producto
Dirección
Numero_Pedido
Fecha_Pedido
Cantidad_Pedido
Clave_Cia_Envios
--
Así, se ha
establecido una relación uno a varios. Ésta representa
lo que la base de datos estará haciendo en la vida real. El
cliente tendrá muchos productos que podrá comprar,
sin importar cuántos otros clientes quieran comprarlos
también. Además, el cliente necesitará haber
pedido un producto para ser un cliente. Usted ya no está
obligado a añadir un cliente cada vez que añade un
nuevo producto a su inventario.
Poner la base de datos en la Primera Forma Normal resuelve el problema de los encabezados de columna múltiples. Muy a menudo, los diseñadores de bases de datos inexpertos harán algo similar a la tabla no normalizada. Una y otra vez, crearán columnas que representen los mismos datos. En una empresa de servicios de electricidad, había una base de datos para el control de refacciones de una planta nuclear. La tabla de su base de datos, la cual contenía los números de parte de las refacciones, tenía una columna repetida más de treinta veces. Cada vez que una nueva parte se tenía que dar de alta, se creaba una nueva columna para almacenar la información. Obviamente, el diseño de la base de datos era bastante pobre y, por lo mismo, resultaba una pesadilla para sus programadores/administradores.
La
normalización ayuda a clarificar la base de datos ya
organizarla en partes más pequeñas y más fáciles
de entender. En lugar de tener que entender una tabla gigantesca y
monolítica que tiene muchos diferentes aspectos, usted sólo
tiene que entender objetos pequeños y más tangibles,
así como las relaciones que guardan con otros objetos también
pequeños. No es necesario mencionar que un mejor entendimiento
del funcionamiento de su base de datos conducirá aun mejor
aprovechamiento de sus activos.
Segunda Forma Normal
La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una depen dencia parcial es un término que describe a aquellos datos que no dependen de la clave de la tabla para identificarlos. En la base de datos de muestra, la información de pedidos está en cada uno de los registros. Sería mucho más simple utilizar únicamente el número del pedido. El resto de la información podría residir en su propia tabla. Una vez que haya organizado la información de pedidos.
Eliminación
de las dependencias parciales -Segunda Forma Normal
Clientes
Pedidos Productos
ID_Productos
ID_Productos ID_Producto
ID_Clientes
Nombre_Productos Fecha_Compra
Nombre
Cantidad_Pedido Costos_Productos
Apellidos
Imagen_Producto
Dirección
Numero_Pedido
Nombre_Cia_Envios
De nuevo,
al organizar el esquema de esta forma puede reflejar el mundo real en
su base de datos. Tendría que hacer algunos cambios en sus
reglas del negocio para que esto fuera aplicable, pero para ilustrar
la normalización, así está bien.
Una
de las mayores desventajas de la normalización es el tiempo
que lleva hacerlo. La mayoría de la gente está
demasiado ocupada, y emplear tiempo para asegurarse de que sus datos
están normalizados cuando todo funciona más o menos
bien, parece ser un desperdicio de tiempo. Pero no es así.
Usted tendrá que emplear más tiempo arreglando una base
de datos no normalizada que el que emplearía en una
normalizada.
Al haber alcanzado la Segunda Forma Normal,
usted puede disfrutar de algunas de las ventajas de las bases de
datos relacionales. Por ejemplo, puede añadir nuevas columnas
a la tabla Clientes sin afectar a las tablas Productos y Pedidos. Lo
mismo aplica para las otras tablas. Alcanzar este nivel de
normalización permite que los datos se acomoden de una manera
natural dentro de los límites esperados.
Una
vez que ha alcanzado el nivel de la Segunda Forma Normal, se han
controlado la mayoría de los problemas de lógica. Puede
insertar un registro sin un exceso de datos en la mayoría de
las tablas. Observando un poco más de cerca la tabla Clientes,
vemos la columna Nombre_Cia_Envios. Ésta no es dependiente del
cliente. El siguiente nivel de normalización explicará
cómo solucionar esto.
Tercera
Forma Normal
La
regla de la Tercera Forma Normal señala 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. En la base de datos de muestra, la
tabla Clientes contiene la columna Nombre_Cia_Envios, la cual no se
identifica únicamente por la clave. Podría separar
estos datos de la tabla y ponerlos en una tabla aparte.
Eliminación
de los datos que no son claves para la Tercera Forma Normal
Clientes
Productos PedidoMaestro PedidoDetallado Cias_Envios
ID_cliente
ID_Producto ID_Pedido ID_PedidoDetallado ID_Cia_Envios
ID_Producto
Nombre_Producto Fecha_Pedido ID_Pedido Nombre_Cia_Envios.
Numero_Pedido
Costos_Productos Cantidad_Pedidos Fecha_Pedido
ID_Cia_Envios
Foto_Producto Cantidad_Pedido
Nombre
Apellidos
Dirección
Ahora
todas sus tablas están en la Tercera Forma Normal. Esto le da
más flexibilidad y previene errores de lógica cuando
inserta o borra registros. Cada columna en la tabla está
identificada de manera única por la clave, y no hay datos
repetidos. Esto provee un esquema limpio y elegante, que es fácil
de trabajar y expandir.
Qué
tan lejos debe llevar la normalización
La
siguiente decisión es ¿qué tan lejos debe llevar
la normalización? La normalización es una ciencia
subjetiva. Determinar las necesidades de simplificación
depende de usted. Si su base de datos va a proveer información
aun solo usuario para un propósito simple y existen pocas
posibilidades de expansión, normalizar sus datos hasta la 3FN
sea quizá algo extremoso. Las reglas de normalización
existen como guías para crear tablas que sean fáciles
de manejar, así como flexibles y eficientes.
A
veces puede ocurrir que normalizar sus datos hasta el nivel más
alto no tenga sentido. Por ejemplo, suponga que añade una
columna extra para la dirección en su base de datos. Es muy
normal tener dos líneas para la dirección. El esquema
de la tabla podría verse como se muestra a continuación:
ID_Cliente
Nombre
Apellidos
Direccion1
Direccion2
De
acuerdo con las reglas, si aplica la Primera Forma Normal, la columna
de dirección debería sacarse de esta tabla y
reemplazarse con la clave de una nueva tabla. El resultado de este
esquema se muestra a continuación:
ID_Cliente
ID_Dirección
Nombre
ID_Cliente
Apellidos
Dirección
La
base de datos ahora cumple con la Primera Forma Normal. Los clientes
pueden tener más de una dirección. El problema aquí
es que usted ha complicado demasiado una idea simple, por tratar de
seguir las reglas de normalización. En el ejemplo mostrado, la
segunda dirección es totalmente opcional. Está ahí
sólo para colectar información que pudiera utilizarse
como información de contacto. No hay necesidad de partir la
tabla en dos y forzar las reglas de la normalización. En esta
instancia, el exceso de normalización frustra el propósito
para el que se utilizan los datos. Añade, de manera
innecesaria, un nivel más de complejidad. Una buena forma de
determinar si está llevando demasiado lejos su normalización,
es ver el número de tablas que tiene. Un número grande
de tablas pudiera indicar que está normalizando demasiado.
Observe su esquema.
¿Está
dividiendo tablas sólo para seguir las reglas o estas
divisiones son en verdad prácticas? Éstas son el tipo
de cosas que usted, el diseñador de la base de datos, necesita
decidir. La experiencia y el sentido común lo pueden auxiliar
para tomar la decisión correcta. La normalización no es
una ciencia exacta. Es subjetiva.
Existen
seis niveles más de normalización que no se han
discutido aquí. Ellos son Forma Normal Boyce-Codd, Cuarta
Forma Normal (4NF), Quinta Forma Normal (5NF) o Forma Normal de
Proyección-Unión, Forma Normal de Proyección-Unión
Fuerte, Forma Normal de Proyección-Unión Extra Fuerte y
Forma Normal de Clave de Dominio. Estas formas de normalización
pueden llevar las cosas más allá de lo que necesita.
Éstas existen para hacer una base de datos realmente
relacional. Tienen que ver principalmente con dependencias múltiples
y claves relacionales.
En
resumen
La
normalización es una técnica que se utiliza para crear
relaciones lógicas apropiadas entre tablas de una base de
datos.
Ayuda
a prevenir errores lógicos en la manipulación de datos.
La normalización facilita también agregar nuevas
columnas sin romper el esquema actual ni las relaciones.
Existen
varios niveles de normalización: Primera Forma Normal, Segunda
Forma Normal, Tercera Forma Normal, Forma Normal Boyce-Codd, Cuarta
Forma Normal, Quinta Forma Normal o Forma Normal de Proyección-Unión,
Forma Normal de Proyección-Unión Fuerte, Forma Normal
de Proyección-Unión Extra Fuerte y Forma Normal de
Clave de Dominio. Cada nuevo nivel o forma lo acerca más a
hacer su base de datos verdaderamente relacional.
Se
discutieron las primeras tres formas. Éstas proveen suficiente
nivel de normalización para cumplir con las necesidades de la
mayoría de las bases de datos.
Normalizar
demasiado puede conducir a tener una base de datos ineficiente y
hacer a su esquema demasiado complejo para trabajar. Un balance
apropiado de sentido común y
práctico puede
ayudarle a decidir cuándo normalizar.
PREGUNTAS:
Que es la Normalización.
Cuantos y cuales son básicamente los grados de normalización.
La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas?. V( ) F( ).
Que establece la segunda forma normal de la normalización de bases de datos.
La regla de la Tercera Forma Normal señala que hay que ________ y _______ cualquier dato que no sea clave. El valor de esta columna debe depender de la clave.
Que ocurre si normalizamos demasiado una base de datos.
La normalización convierte una relación en varias sub-relaciones, cada una de las cuales obedece a reglas. Estas reglas se describen en términos de dependencia?. V( ) F ( ).
Las bases de datos relacionales se normalizan para:?
INFOGRAFIA
http://es.wikipedia.org/wiki/Normalizaci%C3%B3n_de_una_base_de_datos
http://www.ciberaula.com/curso/disenobasesdatos/
http://www.mundotutoriales.com/tutorial_normalizacion_de_bases_de_datos-mdtutorial328281.htm
http://www.mysql-hispano.org/page.php?id=16
http://www.trucostecnicos.com/trucos/ver.php?id_art=278
http://www.monografias.com/trabajos5/norbad/norbad.shtml
http://bulma.net/body.phtml?nIdNoticia=483
http://www.microsoft.com/spanish/msdn/articulos/archivo/291102/voices/odc_FMSNormalization.asp
http://www.abcdatos.com/tutoriales/tutorial/l7052.html
http://www.abcdatos.com/tutoriales/tutorial/l3500.html