lunes, 5 de septiembre de 2011

Ejercicio de Normalización



A continuación se presentará un ejercicio para explicar mejor las formas normales.

Se puede obsevar en la tabla datos en normalización CERO (sin normalizar), para comenzar con el proceso aplicaremos la 1FN (Atomizar los datos). Podemos darnos cuenta que el nombre del lector se puede descomponer en campos más pequeños, así como se muestra en la siguiente imagen.


1FN:
La Segunda Forma Normal (2NF) exige la existencia de la DFC; es decir, todos los atributos no clave deben depender por completo de la clave primaria. Actualmente en nuestra tabla tenemos varias dependencias parciales, si consideramos como atributo clave el código del libro (tal y como se muestra en la figura).

Por ejemplo, el título es completamente identificado por el código del libro pero el nombre del lector, en realidad, no tiene dependencia de este código, por tanto estos datos deben ser trasladados a otra tabla.

2FN:


Hemos creado una tabla para contener los datos del lector y también se tuvo que crear la columna CodLector para identificar esta tabla sin problemas. Sin embargo, esta nueva disposición de la base de datos necesita que exista otra tabla para mantener la información de qué libros están prestados a qué lectores, pues es una relación de muchos a muchos. Esta tabla se muestra a continuación:



Para la Tercera Forma Normal (3NF) la relación debe estar en 2NF y además los atributos no clave deben ser mutuamente independientes y dependientes por completo de la clave primaria; es decir, no debe existir DT. En la tabla de 2NF, la primera tabla conserva información acerca del libro, los autores y editoriales, por lo que debemos crear nuevas tablas para satisfacer los requisitos de 3NF, debido a que el autor depende del nombre del libro.

3FN:

Por último, usaremos la 4FN para no perder información acerca de qué autor ha escrito qué libro y las editoriales correspondientes. La 4 FN establece la DMV, en este caso tenemos que un libro puede ser escrito por muchos autores, de la misma manera, una editorial puede editar muchos libros. Por esta razón, debemos crear otras tablas que relacionen cada libro con sus autores y editoriales.

4FN:


De esta manera, tenemos nuestra base de datos normalizada hasta la 4FN.

domingo, 4 de septiembre de 2011

Cuarta Forma Normal (4FN)

Una tabla está en 4FN sí y solo sí esta en Tercera forma normal o en FNBC (Cualquiera de ambas) y no posee dependencias multivaluadas. Una tabla con una dependencia multivaluada(DMV) es una donde la existencia de dos o más relaciones independientes muchos a muchos causa redundancia; y es esta redundancia la que es suprimida por la cuarta forma normal.

Se presentan ejemplos para explicar mejor esta forma normal:




EJERCICIO1:


En la tabla presentada podemos darnos cuenta de una Dependencia Multivaluada (DMV) entre PK. La explicación es la siguiente: En una tienda existen varias categorías de productos y en cada categoría existen muchos artículos. Entonces, utilizamos la 4FN para eliminar esta DMV, quedando las siguientes tablas:







De esta manera se eliminan las dependecias multivaluadas de las tablas.





EJERCICIO 2:




En la tabla presentada podemos identificar fácilmente la dependencia multivalor. Un bebé puede ser atentido por muchas enfermeras y por muchos médicos. Al hacer uso de las reglas de la 4FN tenemos las siguientes tablas:










EJERCICIO 3:





Nuevamente, tenemos una tabla con DMV. En una facultad hay muchas carreras y, del mismo modo, en una carrera hay varios cursos electivos. Esta DMV se resuelve de la siguiente manera:










EJERCICIO 4:



En la tabla presentada, observamos una DMV debido a que en un restaurante (delivery) se elaboran muchos tipos de platos, los mismos que son distribuidos a diversas áreas de envio. Resolviendo este problema, tenemos las siguientes tablas.







Tercera Forma Normal (3FN)

Una tabla está normalizada en esta forma si todas las columnas, que no son llave, poseen una dependecia funcional completa (DFC - 2FN) de la llave primaria y no hay dependencias transitivas. Una dependencia transitiva es aquella en la cual existen columnas, que no son llave, que dependen de otras columnas, que tampoco son llave.

Cuando las tablas están en la Tercera Forma Normal se previenen errores de lógica cuando se insertan o borran registros. Cada columna en una tabla está identificada de manera única por la llave primaria, y no deben haber datos repetidos. Esto provee un esquema limpio y elegante, que es fácil de trabajar y expandir.

A continuación, se presentarán ejemplos para entender mejor la 3FN:

EJEMPLO1:




En esta tabla tenemos la PK conformada por C_Mozo, donde se tiene como atributos no clave a (N_Mozo, D_Nacimiento, F_Mayor_Edad), podemos observar que hay una dependencia transitiva entre algunos atributos. F_Mayor_Edad depende de la fecha de nacimiento de las personas (D_Nac). Resolviendo este problema con la 3FN quedarían las siguientes tablas:



De esta forma se ha logrado eliminar la DT en las tablas.

EJERCICIO 2:




En la tabla presentada debemos usar la regla de la 3FN para eliminar la DT que existe entre T_Promoción y Q_Producto, debido a que la promoción de esta tienda depende de la cantidad de un producto comprado, por lo que las tablas resueltas quedarían de la siguiente manera:









EJERCICIO 3:







En la tabla podemos observar la PK conformada por (C_Vendedor). Podemos notar que existe DT entre algunos atributos no clave. Por ejemplo, el $_Sueldo_Final depende de la comisión y ésta de la cantidad de ventas del vendedor. Por tal razón, se debe de aplicar la 3FN para resolver el problema y quedarían las siguientes tablas:









EJERCICIO 4




Esta es la base de datos de una empresa de Poker, se tiene como PK a (C_Torneo). Se puede notar que entre los atributos no clave existe DT en algunos casos. Por ejemplo, T_Mano_Ganadora depende del nombre del ganador del torneo (N_Ganador). Usando la 3FN las tablas quedarían de la siguiente manera:




FALLAS DE LA 3FN:


La mayoría de las tablas 3NF están libres anomalías de actualización, inserción, y borrado. Ciertos tipos de tablas 3NF, que en la práctica raramente se encuentran, son afectadas por tales anomalías; éstas son tablas que no satisfacen la forma normal de Boyce-Codd (BCNF) o, si satisfacen la BCNF, son insuficientes para satisfacer las formas normales más altas 4NF o 5NF.

Segunda Forma Normal (2FN)

La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un término que describe a aquellos datos que no dependen de la llave primaria de la tabla para identificarlos.

En conclusión, una tabla que está en la primera forma normal (1FN) debe satisfacer criterios adicionales para calificar para la segunda forma normal. Específicamente: una tabla 1FN está en 2FN sí y solo sí, 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, a esto se le llama Dependencia Funcional Completa (DFC).

Una vez alcanzado el nivel de la Segunda Forma Normal, se controlan la mayoría de los problemas de lógica. Podemos insertar un registro sin un exceso de datos en la mayoría de las tablas.

A continuación, se presentarán cuatro ejemplos para entender mejor esta forma normal.




EJEMPLO 1:




En la tabla presentada se puede observar una PK (clave principal) conformada por (C_Alumno, C_Curso). Podemos darnos cuenta que hay atributos que no satisfacen la 2FN (Dependencia Funcional Completa). Por ejemplo, los atributos (N_Alumno, T_Apellido_Al) dependen de una parte de la clave primaria, C_Alumno; mas no dependen de C_Curso. Por otro lado, la nota (Q_nota1, Q_nota2) depende del alumno y del curso (C_Alumno, C_Curso), esto se encuentra en DFC. Luego de haber analizado la segunda forma normal, las tablas quedarían de la siguiente manera.










EJEMPLO 2:




En la tabla se puede apreciar que la PK esta compuesta por (C_Carro, C_Modelo). Analizando la 2FN se puede decir que hay datos que no tienen dependencia funcional completa. Por ejemplo, los atributos (T_Placa, T_Color_Carro) dependen solo del código del carro (C_Carro) mas nos del código del modelo (C_Modelo). Mientras que $_Precio sí depende de la PK (C_Carro, C_Modelo). Luego de resolver la 2FN quedarían las siguientes tablas:









EJERCICIO 3:




En la tabla mostrada se tiene la PK conformada por (C_Cliente, C_Artículo). Podemos observar que hay atributos que no estan en DFC con la PK. Los atributos (N_Cliente, T_Apellidos) solo dependen del C_Cliente, mas no de C_Artículo. Del mismo modo, T_Descripcion depende del código del artículo para variar. Luego de utilizar la 2FN, las tablas quedarían de la siguiente manera:







EJERCICIO 4:En la tabla mostrada tenemos la PK conformada por (C_Boleta, C_Ruc). Nuevamente, analizando con las reglas de la 2FN podemos decir que el atributo D_Emisión depende solo del C_Boleta, mas no del C_Ruc. Asimismo, (N_Empresa, T_Dirección) dependen del C_Ruc y no de C_Boleta. Por lo tanto, resolviendo la 2FN las tablas quedarían de la siguiente manera:





FALLAS DE LA 2FN:



La 2FN sufre de "redundancia de datos", esto se debe a que, por ejemplo, se pueden ingresar los datos en tuplas de la tabla cambiando solo un atributo en común en cada una de ellas. Esta anomalí se resuelve con la 3FN.

Primera Forma Normal (1FN)

La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas, a este proceso se le denomina "atomización".

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. La normalización ayuda a clarificar la base de datos y a 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, sólo tenemos que entender los objetos pequeños y más tangibles, así como las relaciones que guardan con otros objetos también pequeños.

A continuación, veremos unos ejemplos donde se aplica la primera forma normal a tablas de "normalización CERO" (tablas no normalizadas):

EJEMPLO 1:


En la tabla presentada, podemos observar una tabla donde hay datos que no están atomizados, es el caso de los numeros de teléfono. Para resolver este problema, se hace uso de la primera forma normal (1FN) y se logra el siguiente resultado:



EJEMPLO 2:







En la tabla presentada, el atributo "#_Reserva" no se encuentra atomizado. Para resolver este problema usamos la 1FN. El resultado es la siguiente tabla:






EJEMPLO 3:



En el caso presentado, podemos darnos cuenta que el nombre completo del cliente se puede atomizar, el resultado luego de la aplicación de la 1FN sería el siguiente:





EJEMPLO 4:

En la tabla presentada se tiene un problema con las notas, falta atomizar el atributo. Usando la 1FN quedaría de la siguiente manera si se organiza en 4 practicas calificadas (PC):







FALLA DE LA 1FN:


La falla que se puede encontrar en la 1FN es que puede existir dificultad en la modificación de datos; por ejemplo, si se quiere cambiar el registro de algun atributo se deberia de cambiar en cada tupla en la que se encuentre.