Sobre el contenido del blog

Todo aquel que estudia carreras relacionadas a la informática necesita aprender sobre bases de datos. Si bien algunos conceptos son muy teóricos, no son difíciles de entender si son explicados de manera adecuada y sencilla.

En este blog quiero explicar sobre aquellos temas de bases de datos de la manera en que me hubiera gustado a mí que me las explicaran.

lunes, 16 de abril de 2012

Ejemplo de normalización hasta la 4FN

Supongamos que tenemos la siguiente relacion en una tienda:

(C_ORDENVENTA, D_FECHA, C_CLIENTE, N_CLIENTE, T_DIRECCION, C_VENDEDOR, N_VENDEDOR, C_ITEM, T_DESCRIPCION, Q_CANTIDAD, Q_PRECIO)

Procedemos a realizar la 1FN, separamos los datos en diferentes relaciones si es necesario, eliminamos datos repetidos. Obtenemos lo siguiente:

(C_ORDENVENTA, C_ITEM, T_DESCRIPCION, Q_CANTIDAD, Q_PRECIO)
(C_ORDENVENTA, D_FECHA, C_CLIENTE, N_CLIENTE, T_DIRECCION,C_VENDEDOR,N_VENDEDOR)

Una vez aplicada la 1FN, procedemos a aplicarle la 2FN, removiendo las dependencias parciales, buscando la dependencia funcional completa. 

Item(C_ITEM, T_DESCRIPCION)
Venta(C_ORDENVENTA, C_ITEM, Q_CANTIDAD, Q_PRECIO)

(C_ORDENVENTA, D_FECHA, C_CLIENTE, N_CLIENTE, T_DIRECCION,C_VENDEDOR,N_VENDEDOR)

De esta manera nuestras relaciones adquieren mas sentido, pero aun se tendrían anomalias, por lo que es necesario pasar a la 3FN, eliminando todo tipo de dependencias transitivas, separandolas en nuevas relaciones:

Cliente(C_CLIENTE, N_CLIENTE, T_DIRECCION)
Vendedor(C_VENDEDOR, N_VENDEDOR)
Venta(C_ORDENVENTA, D_FECHA, C_CLIENTEC_VENDEDOR)
Items(C_ITEM, T_DESCRIPCION, Q_PRECIO)
ItemVenta(C_ORDENVENTAC_ITEMQ_CANTIDAD)

Las tablas quedan ordenadas y en esta ocasion ya no ocurren anomalias en la insercion, modificación o la eliminación de datos. Por lo que podriamos pasar a realizar la 4FN, pero notamos que en nuestras relaciones no existen dependencias multivalores. Por lo que finalizamos la normalizacion de nuestra base de datos. Finalmente, las relaciones quedarían de la siguiente manera:

Cliente     (C_CLIENTE, N_CLIENTE, T_DIRECCION)
Vendedor (C_VENDEDOR, N_VENDEDOR)
Venta        (C_ORDENVENTA, D_FECHA, C_CLIENTEC_VENDEDOR)
Items        (C_ITEM, T_DESCRIPCION, Q_PRECIO)
ItemVenta (C_ORDENVENTAC_ITEM, Q_CANTIDAD)


No hay comentarios:

Publicar un comentario