domingo, 3 de abril de 2011

2do Ejemplo

Supongamos que nos plantean desarrollar una B.D. para una empresa de transporte que quiere
gestionar los envíos de pedidos a los clientes. Podemos plantearnos un diseño inicial de una tabla
para esta base de datos que  contenga la información del código del envío, el camión que lo
transporta, los datos del cliente al que va  dirigido así como cada uno de los artículos que
componen el envío incluyendo sus características, tal y como se muestra en la figura siguiente:


ENVIO
Codigo_envio
Matricula_camion
Modelo_camion
Capacidad_camion
Cliente_1
Direccion_cliente_1
Pedido_cliente_1
Articulo_1_pedido_cliente_1
Volumen_articulo_1_pedido_cliente_1
 …
Articulo_I_pedido_cliente_1
Volumen_articulo_I_pedido_cliente_1
 …
Cliente_N
Direccion_cliente_N
Pedido_cliente_N
Articulo_1_pedido_cliente_N
Volumen_articulo_1_pedido_cliente_N
 …
Articulo_J_pedido_cliente_N
Volumen articulo J pedido cliente N





Es evidente que este diseño inicial no es bueno, por lo que habrá
que aplicar las tres primeras formas normales y llevar el diseño a
3FN.


La 1FN debemos aplicarla a la tabla ENVIO, obteniendo una nueva tabla PEDIDO, sobre la cual
debemos volver a aplicar la 1FN, obteniendo una nueva tabla PEDIDO_ARTICULO, para poder
tener valores atómicos. Después de esto, el esquema queda como sigue:
ENVIO
Codigo_envio
Matricula_camion
Modelo_camion
Capacidad_camion

PEDIDO_CLIENTE
Pedido_cliente
Cliente
Direccion_cliente
Codigo_envio

PEDIDO_ARTICULO
Pedido_cliente
Codigo_articulo
Volumen

Apliquemos ahora la 2FN; observamos que en la tabla PEDIDO_ARTICULO el campo volumen
solo depende del  codigo_articulo, no dependiendo para nada del  pedido_cliente, por lo cual
obtenemos una nueva tabla, que llamaremos ARTICULO:

ENVIO
Codigo_envio
Matricula_camion
Modelo_camion
Capacidad_camion

PEDIDO_CLIENTE
Pedido_cliente
Cliente
Direccion_cliente
Codigo_envio

PEDIDO_ARTICULO
Pedido_cliente
Codigo_articulo

ARTICULO
Codigo articulo
Volumen

Aplicando la 3FN, vemos que en la tabla ENVIO los datos modelo_camion y capacidad_camion
dependen de matricula_camion, que no es clave primaria, por lo cual debemos sacarlos en una
nueva tabla. Esto mismo sucede con el dato  direccion_cliente respecto a  cliente en la tabla
PEDIDO_CLIENTE. Teniendo esto en cuenta, el diseño final queda como:


CLIENTE
Cliente
Direccion_cliente


ENVIO
Codigo_envio
Matricula_camion

PEDIDO_CLIENTE
Pedido_cliente
Cliente
Codigo_envio

PEDIDO_ARTICULO
Pedido_cliente
Codigo_articulo


CAMION
Matricula_camion
Modelo_camion
Capacidad_camion


ARTICULO
Codigo articulo
Volumen

No hay comentarios:

Publicar un comentario