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)


Cuarta Forma Normal en Bases de Datos (4FN)

La cuarta forma normal (4NF) es una forma normal usada en la normalización de bases de datos. Esta se asegura que todas las dependencias multivaluadas esten representadas de la manera mas eficiente en la base de datos. Esta forma normal se realiza despues de la forma normal de Boyce-Codd.

Una dependencia multivaluada es una restricción completa entre dos grupos de atributos en una relación.
Esta dependencia multivaluada se resuelve de la siguiente manera:
Hay algunas ocasiones en que aun existen anomalías después de una FN4, aunque este tipo de anomalías son del tipo semánticas. un ejemplo seria la siguiente tabla con su descripción:

Cuando un psiquiatra es autorizado a ofrecer el tratamiento reembolsable a los pacientes asegurados por el asegurador P, y el psiquiatra puede tratar la condición C, entonces - en caso que el asegurador P cubra la condición C - debe ser cierto que el psiquiatra puede ofrecer el tratamiento reembolsable a los pacientes que sufren de la condición C y están asegurados por el asegurador P.
Se puede dividir con esta descripción a la relación en tres partes:
Esta disposición ayuda a reducir redundancia y a facilitar cualquier tipo de búsquedas.

Tercera Forma Normal en Bases de Datos (3FN)

La tercera forma normal (3NF) es una forma normal usada en la normalización de bases de datos. Para que la tabla esté en 3NF, se debe cumplir que la tabla ya esté en 2NF. Adicionalmente, ningun atributo no primario de la tabla debe ser dependiende transitivamente de una clave primaria.


Ejemplos:

esto se soluciona removiendo la transitividad y separando en dos relaciones diferentes

La anomalia que presenta la tercera forma normal no esta en la insercion, modificacion, o eliminacion de datos. Sino, en la dependencia multivaluada.



Segunda Forma Normal en Bases de Datos (2FN)

La segunda forma normal (2NF) es una forma normal usada en normalización de bases de datos. Una tabla que está en la primera forma normal (1NF) debe satisfacer criterios adicionales para calificar para la segunda forma normal.

Una tabla 1NF estará en 2NF si y solo si, dada una clave primaria y cualquier atributo que no sea un constituyente de la clave primaria, el atributo no clave depende de toda la clave primaria en vez de solo una parte de ella.

Ejemplos:
  • Ejemplo1:
Esto se soluciona separando el atributo N_TRABAJADOR a una tabla separada
  • Ejemplo 2:
en este caso se puede separar la tabla en 3 tablas diferentes para cumplir con la 2FN

Ejemplo3: 
Esta tabla esta en FN2

Ejemplo4:
Esta tabla esta en FN2

La Segunda Forma Normal presenta anomalias, en donde si existe dependencia funcional completa entre los atributos. como en el ejemplo siguiente: 

De este tipo de anomalias se encarga la tercera forma normal.

Primera Forma Normal en Bases de Datos (1FN)

Esta entrada les puede servir para comprender lo que es la normalización de bases de datos. Como también entender y aplicar, en base a ejemplos sencillos, todas las 4 formas normales.
Puedes seuir los siguentes enlaces para el resto de formas normales:

 

Normalización y Primera Forma Normal

El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.

Las bases de datos relacionales se normalizan para:
  • Evitar la redundancia de los datos.
  • Evitar problemas de actualización de los datos en las tablas.
  • Proteger la integridad de los datos.
La primera forma normal (1FN), requiere que los datos sean atómicos. En otras palabras, la 1FN prohíbe a un campo contener más de un dato de su dominio de columna. También exige que todas las tablas deben tener una clave primaria. Por último, indica que una tabla no debe tener atributos que acepten valores nulos.

Cuando no existe normalización, se presentan anomalías en la base de datos. Estos problemas que ocasionan problemas al momento de insertar, modificar o eliminar datos. 

Ejemplos:

  • Múltiples valores:
Multiples datos en número de teléfono
 La forma correcta sería:
Número de teléfono normalizado


  • Redundancia de datos:
Datos redundantes en dos registros
 La forma correcta de representar la tabla sería:
Sin redundancia. Cabe mencionar que la llave primaria de la segunda tabla es compuesta
  • Columnas que permiten valores nulos:


La forma correcta de representar esta tabla seria como en el ejemplo anterior


  • Tabla sin llave principal:
La forma correcta sería agregando una llave principal