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: 3FN
Mostrando entradas con la etiqueta 3FN. Mostrar todas las entradas
Mostrando entradas con la etiqueta 3FN. Mostrar todas las entradas

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 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.