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
|
(*)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:
Publicar un comentario