Nombre: César Augusto Berríos Mesía | Curso: Base de Datos | Ciclo: 2011-2 | Profesor: Luis Enrique Serna Jherry La normalización en las Bases de Datos

martes, 6 de septiembre de 2011

Normalización desde la 1FN hasta la 4FN

Aquí les dejo un ejemplo sobre el uso de las 4 formas normales. Este ejemplo es sobre los datos de una universidad. Luego de obtener diversos datos, se logró armar una tabla con atributos que permite que guarden una relación entre datos.

Tabla con los datos atomizados (1FN):


(C_Alumno)--->(N_Alumno,C_Curso,N_Curso,Q_Creditos_Curso,
    C_Seccion,C_Profesor,N_Profesor)

Tablas en segunda forma normal (2FN), por cada tabla hay una única clave primaria y los demás son atributos no claves que dependen funcionalmente de la PK.


(C_Alumno)--->(N_Alumno)


(C_Curso)--->(N_Curso,Q_Creditos_Curso)


(C_Seccion)--->(C_Profesor,N_Profesor)

Tablas en la tercera forma normal (3FN), se forman las dependencias transitivas para lograr unir las tablar y permitir construir una estructura eficiente.


(C_Alumno)--->(N_Alumno,C_Curso,C_Seccion)


(C_Curso)--->(N_Curso,Q_Creditos_Curso)


(C_Seccion)--->(C_Profesor,N_Profesor)

Las tablas en la cuarta forma normal (4FN), no contienen dependencias multivaloradas.


(C_Alumno)--->(C_Curso,C_Seccion)


(C_Alumno)--->(N_Alumno)


(C_Curso)--->(N_Curso,Q_Creditos_Curso)


(C_Seccion)--->(C_Profesor)


(C_Profesor)--->(N_Profesor)

lunes, 5 de septiembre de 2011

Explicación de la Cuarta Forma Normal (4FN)

La cuarta forma normal (4FN) busca que las dependencias de multivalor se almacenen de manera eficiente y ordenada en la Base de Datos.

Una tabla está en 4NF si y solo si esta en Tercera forma normal y no posee dependencias multivaluadas no triviales. La definición de la 4NF confía en la noción de una dependencia multivaluada. Una tabla con una dependencia multivaluada 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.

Ejemplos:

1-


(C_Alumno)--->(N_Alumno, N_Curso)

La tabla anterior muestra a la clave primaria y a sus dos atributos, de los cuales el Alumno tiene lleva más de un curso por lo que con la tabla no se estaría optimizando el proceso. 

La separación de las tablas y el uso de la dependencia multivalor, considerando que la cantidad de cursos que se puede llegar a tener es de 3:


(C_Alumno)--->(N_Alumno)


(C_Alumno)--->(N_Curso1,N_Curso2,N_Curso3)

2-



(C_Usuario)--->(N_Usuario,N_Libro)

En este caso, la tabla nos indica que se trata de una base de datos de una biblioteca la cual tiene 3 atributos: Código de Usuario, Nombre de Usuario y Nombre del Libro. Sin embargo, la dependencia multivalor permite que se pueda sacar una gran cantidad de libros y optimizar el proceso de préstamo de libros.


(C_Usuario)--->(N_Usuario)


(C_Usuario)--->(N_Libro)

3-


(#_Boleta)--->(N_Cliente,#_Bolilla1,#_Bolilla2,#_Bolilla3,
       #_Bolilla4,#_Bolilla5,#_Bolilla6)


Esta tabla es sobre la Tinka y las jugadas que se realizan. Se pueden realizar varias jugadas en una sola boleta, por lo que la clave primaria resultaría ser el número de la boleta, y los demás atributos de ésta. Sin embargo, la dependencia que se indica arriba no está completamente normalizada, esto se debe a que el cliente



 (#_Boleta)--->(N_Cliente)


(#-Boleta)--->(#_Bolilla1,#_Bolilla2,#_Bolilla3,
                     #_Bolilla4,#_Bolilla5,#_Bolilla6)

4-


(C_Jefe)--->(N_Jefe,N_Empleado)

En la tabla se muestra una tabla que almacena los datos que una empresa requiere para poder saber a que jefe se le relaciona con su empleado. Máximo un jefe puede tener 3 empleados.

Por eso se debe aplicar la 4FN para que el multivalor de un máximo de 3 empleados se muestre y permita transformar una tabla con redundancia, en dos tablas donde en una se muestre la relación del código del jefe con su nombre y otra en donde se aprecie la información de el código del jefe y sus empleados.


(C_Jefe)--->(N_Jefe)


(C_Jefe)--->(N_Empleado1,N_Empleado2,N_Empleado3)

Explicación de la Tercera Forma Normal (3FN)


La primera forma normal (3FN) se logra identificar cuando ningún atributo, diferente a las claves primarias, está en Dependencia Funcional con otro atributo no-clave. 


(Clave Primaria)(PK)---> (Atributo1,Atributo2,Atributo3) 


(Atributo3)(PK)--->(Atributo4)




Ejemplos:


1-



En esta primera tabla podemos observar que el Código del Evento (C_Evento) es el PK y los demás atributos que dependen de éste; sin embargo, la dirección del Local donde se realiza el evento (T_Direccion) , se guarda tupla por tupla y no se optimiza la información. Ahí es cuando se realiza la Tercera Forma Normal (3FN), logrando separarlos en dos tablas para un mejor almacenamiento de los datos:




(C_Evento)--->(N_Evento,N_Local)


(N_Local)--->(T_Direccion)

2-


La tabla anterior se representaría así:


(N_Torneo)--->(#_Año,N_Ganador,D_Nacimiento_Ganador)


Pero existe un error debido a que la Fecha de Nacimiento del Ganador (D_Nacimiento_Ganador), depende del Nombre del Ganador (N_Ganador).


Por lo que se separaría en dos tablas:




(N_Torneo)--->(#_Año,N_Ganador)


(N_Ganador,D_Nacimiento_Ganador)

3-



La clave primaria de la tabla anterior es el Código del Personal (C-Personal), los otros 3 atributos dependen funcionalmente de éste. Sin embargo, el valor booleano que me permite identificar si es mayor de edad (F_Mayor_Edad_Personal) se puede sacar a partir de la fecha de nacimiento de la persona (D_Nacimiento_Personal); por lo que se separa en dos tablas de la siguiente manera:



(C_Personal)--->(N_Personal,D_Nacimiento_Personal)


 (D_Nacimiento_Personal)--->(F_Mayor_Edad_Personal)

4-

La tabla siguiente tiene como clave primaria al Numero de la Boleta (#_Boleta); los demás atributos son dependientes del numero de boleta.


Sin embargo, la dirección de la empresa también depende del nombre de la empresa.


(#_Boleta)--->(N_Cliente,N_Empresa,$_Precio_Total)


(N_Empresa)--->(D_Direccion_Empresa)


Errores en la 3FN

El error más común en la 3FN es confundirse con la cuarta normalización la cual consiste en el multivalor. 


En esta tabla se está haciendo uso del multivalor limitando al alumno a inscribirse en 3 Cursos como máximo. Esto corresponde a la 4FN.

Lo que debería hacerse en todo caso es separar el C_Alumno con el N_Alumno, y en otra C_Alumno con N_Curso1, N_Curso2 y N_Curso3.

domingo, 4 de septiembre de 2011

Explicación de la Segunda Forma Normal (2FN)

La segunda forma normal se identifica cuando cada atributo no clave de la relación depende funcionalmente de una clave primaria (Dependencia Funcional Completa).

Es como atribuirle una función en base a la clave primaria, donde las claves primarias son las variables y los atributos son el resultado de la función.

Ejemplos:

1- 


En este cuadro se pueden apreciar 3 atributos que han sido identificados gracias a la 1FN. Luego, podemos identificar la clave primaria, siendo ésta el Código del Alumno (C_Alumno) y los otros 2 atributos, son los dependientes de esta clave.

Esto generaría la siguiente función:

(C_Alumno)--->(N_Alumno,#_Promedio_Ponderado)


2-




En este caso, la clave primaria resultaría ser el Numero de DNI (#_DNI), la cual tendría 5 atributos dependientes.

(#_DNI)---> (N_Primer_Nombre,N_Segundo_Nombre,N_Primer_Apellido,
                   N_Segundo_Apellido,D_Nacimiento)

3-



Habrían 3 atributos dependientes de la clave primaria que en este caso sería el Código del Empleado (C_Empleado).

(C_Empleado)--->(N_Empleado,T_Area_Trabajo)


4- 



Finalmente en este caso bien simple, la clave primaria sería el Código del Alumno, la cual tendría un único atributo dependiente.

(C_Alumno)--->(N_Carrera)


Fallas que presenta la 2FN


Aquí podrá identificar una falla y saber como arreglarla:




En este caso se puede apreciar un error debido a que el atributo $_Sueldo no depende del Código del Empleado, que resulta ser la clave primaria; sino depende de el Área de Trabajo. Entonces lo que resultaba de esta manera:

(C_Empleado)--->(N_Empleado,T_Area_Trabajo,$_Sueldo)

Deberia de ser así:

(C_Empleado)--->(N_Empleado,T_Area_Trabajo)

(T_Area_Trabajo)--->($_Sueldo)

Se crea una nueva relación para almacenar el dato restante.

Diferencia entre datos Normalizados en 1FN y el universo de datos no normalizado


La normalización es el proceso de organizar los datos de una base de datos. Se incluye la creación de tablas y el establecimiento de relaciones entre ellas según reglas diseñadas tanto para proteger los datos como para hacer que la base de datos sea más flexible al eliminar la redundancia y las dependencias incoherentes. 

La primera forma normal (1FN) consiste en que todos los atributos que permiten guardan relaciones estén atomizados (no repetitivos).

La diferencia entre los datos no normalizados y la 1FN es que los datos no normalizados, se encuentran libres y sin relación alguna; mientras que los datos  formalizados por la 1FN ya están atomizados, es decir relacionados y no repetitivos, lo cual permite que se pueda llegar a conseguir información a partir de ello.


Ejemplos


1-

Datos No Normalizados


Datos Normalizados en la 1FN


2-

Datos No Normalizados


Datos Normalizados en la 1FN


3-

Datos No Normalizados


Datos Normalizados en la 1FN


4-

Datos No Normalizados


Datos Normalizados en la 1FN