3.12.15

Tercera Forma Normal (3FN)

Una tabla se encuentra en 3FN si cumple con la 2FN y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave. Una dependencia transitiva es aquella en la cual existen columnas que no son clave que dependen de otras columnas que tampoco lo son.
Cuando las tablas están en la Tercera Forma Normal se previenen errores de lógica al agregar o eliminar registros.
Veamos un ejemplo: Tenemos una tabla que permite a una empresa organizadora de eventos, registrar las contrataciones que efectúa y sus datos correspondientes:


                Tabla de Eventos

(*)Código de evento
Cliente contratante
Salón
Dirección del Salón
A
Álvarez, Mauro
Los lirios
Sáez Peña 223

B
Molina, Santiago
Amanecer
Caseros 1045

C
Sosa, Manuela
Molinos
Córdoba 2340


Podemos observar que la tabla cumple las reglas de 1FN y 2FN ya que no contiene datos repetitivos ni dependencias parciales. Analicemos las dependencias funcionales de esta tabla de manera de poder analizar si existen dependencias transitivas:


Código de evento -> Cliente contratante
Código de evento.  -> Salón
Salón -> Dirección del salón

Como podemos observar tanto el Cliente contratante como el Salón dependen de la clave primaria, pero la Dirección del salón depende del Salón (que no es clave primaria en esta tabla). Por ello, al existir tan sólo una dependencia transitiva (Código de evento  ® Salón ® Dirección del salón) concluimos que la tabla no se encuentra en 3FN.
Para poder normalizarla deberemos dividirla en dos tablas del siguiente modo:

                         Tabla de Eventos
(*)Código de evento
Cliente contratante
Código de Salón
A
Álvarez, Mauro
1

B
Molina, Santiago
2

C
Sosa, Manuela
3

D
Monte, Alina
2



                       Tabla de Salones
(*)Código de Salón
Salón
Dirección del Salón
1
Los lirios
Sáez Peña 223

2
Amanecer
Caseros 1045

3
Molinos
Córdoba 2340


Obsérvese que además de dividir las tablas, los Salones han sido codificados, de manera de evitar errores de carga. De esta manera si en la tabla eventos debemos cargar dos veces el mismo salón, no corremos el riesgo que por errores involuntarios de tipeo (o faltas de ortografía) se carguen de manera diferente, lo cual traería problemas al querer relacionar con la tabla Salones o efectuar consultas (Por ej. Amanecer es, para un SGBD un salón diferente que Amaneser).

No hay comentarios: