Para que una tabla pueda cumplir con la tercera forma normal es primero necesario que la tabal cumpla con la segunda forma normal, y además que:
No exista ninguna dependencia funcional transitiva entre los atributos que no son clave, es decir: una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y.
Esto, en términos simples significa que hagamos una generalización de la segunda forma normal y nos aseguremos que todo campo no-llave (cualquier campo que no forma parte de las llaves candidatas) no dependa de otro campo que no sea de las candidatas. En la segunda forma normal se verifica todo campo no-llave con las llaves candidatas, pero en la tercera forma normal se verifica contra todos los demás campos (los que no forman parte de las llaves candidatas) para verificar que todo campo no-llave no esté fuera de lugar.
Si se pudiera hacer una simplificación de la 3FN, se podría decir que intenta verificar que todo campo no-llave no dependeda de otro campo no-llave (por que con la 2FN se aseguró que no depende de las llaves candidatas, por lo que faltaba verificar contra todos los demás).
Ejemplo de materias cursadas en una escuela
Considerando la siguiente tabla de alumnos inscritos en una escuela hagamos el análisis de la tercera forma normal
- Matrícula
- Nombre
- Apellidos
- FechaDeNacimiento
- PaísDeNacimiento
- CiudadDeNacimiento
Si asumimos que ya cumple con la 1FN, que cumple con la 2FN y que la llave primaria es Matrícula, y solo hay una llave seundaria que es Nombre+Apelidos (y que no hay otras llaves candidatas) se debe hacer un análisis de campos no-llave contra los demás campos no-llave
- La Fecha de Nacimiento depende de alumno (de las dos llaves candidatas), por lo que si cumple con la 3FN.
- La Ciudad de nacimiento también depende del alumno y por tanto cumple con la tercera forma normal.
- El País de nacimiento, si bien parecería que también depende del alumno (es el país donde nació el alumno), depende realmente de la ciudad, ya que una ciudad no puede estar en dos países diferentes (puede haber más de una ciudad con el mismo nombre, pero no es la misma) y entonces el país depende del valor que toma la ciudad
Encontramos por tanto País de nacimiento cumple con la 2FN (depende del alumno), pero estrictamente hablando depende de la ciudad (o la ciudad depende del país, como se quiera ver). Por tanto es necesario eliminar ese campo (País) de la tabla de alumnos para evitar errores de la información (que por equivocación un alumno tenga una combinación de País-Ciudad que no exista en el mundo real) y se eliminaría la redundancia de la información.