La tercera forma normal ( eng. Third normal form ; abreviado como 3NF ) es una de las posibles formas normales de una relación en una base de datos relacional . 3NF fue formulado originalmente por E. F. Codd en 1971 .
Una variable de relación R está en 3FN si y solo si se cumplen las siguientes condiciones:
Explicaciones para la definición:
Un atributo no clave de una relación R es un atributo que no pertenece a ninguna de las claves candidatas de R.
La dependencia funcional de un conjunto de atributos Z de un conjunto de atributos X (escrito X → Z , pronunciado "x determina z") es transitiva si hay un conjunto de atributos Y tal que X → Y e Y → Z. Al mismo tiempo, ninguno de los conjuntos X , Y y Z es un subconjunto del otro, es decir, las dependencias funcionales X → Z , X → Y e Y → Z no son triviales , y tampoco existe una dependencia funcional Y → X.
Carlo Zaniolo dio una definición de 3NF equivalente a la de Codd pero redactada de manera diferente en 1982 . Según ella, una variable de relación está en 3NF si y solo si cada una de sus dependencias funcionales X → A satisface al menos una de las siguientes condiciones:
La definición de Zaniolo define claramente la diferencia entre 3NF y la forma normal de Boyce-Codd (BCNF) más estricta: BCNF elimina la tercera condición (" A es un atributo clave").
Bill Kent proporcionó un resumen memorable y tradicionalmente descriptivo de la definición 3NF de Codd : cada atributo no clave "debe proporcionar información sobre la clave, la clave completa y nada más que la clave" [1] .
La condición de depender de la "clave completa" de los atributos que no son clave asegura que la relación esté en la segunda forma normal; y la condición para que dependan de "nada más que la clave" es que estén en tercera forma normal.
Chris Date habla del resumen de Kent como una "característica intuitivamente atractiva" de 3NF y observa que, con una ligera modificación, también puede servir como una definición de la forma normal más estricta de Boyce-Codd : "cada atributo debe proporcionar información sobre una clave , una llave completa, y nada más que la llave. La versión de Kent de la definición 3NF es menos estricta que la versión de la forma normal de Boyce-Codd de la formulación de Data, ya que la primera solo establece que los atributos que no son claves dependen de las claves. Los atributos primarios (que son claves o partes de ellas) no necesitan ser funcionalmente dependientes en absoluto; cada uno de ellos proporciona información sobre la clave proporcionando la propia clave o parte de ella. Cabe señalar aquí que esta regla es válida solo para atributos que no son clave, ya que aplicarla a todos los atributos deshabilitará por completo todas las claves alternativas complejas, ya que cada elemento de dicha clave violará la condición de "clave completa".
Considere la variable de relación R1 como un ejemplo:
Empleado | Departamento | Teléfono |
---|---|---|
Grishin | Contabilidad | 22-11-33 |
vasiliev | Contabilidad | 22-11-33 |
Petrov | Suministro | 44-55-66 |
Cada empleado pertenece exclusivamente a un departamento; cada departamento tiene un solo teléfono. El atributo Empleado es la clave principal. Los empleados no tienen teléfonos personales y el número de teléfono del empleado depende únicamente del departamento.
En el ejemplo, existen las siguientes dependencias funcionales: Empleado → Departamento , Departamento → Teléfono , Empleado → Teléfono .
La variable de relación R1 está en la segunda forma normal porque cada atributo tiene una dependencia funcional irreducible de la clave potencial Empleado .
La relación Empleado → Teléfono es transitiva, por lo que la relación no está en tercera forma normal.
Dividir R1 da como resultado dos variables de relación que están en 3FN:
Departamento | Teléfono |
---|---|
Contabilidad | 22-11-33 |
Suministro | 44-55-66 |
Empleado | Departamento |
---|---|
Grishin | Contabilidad |
vasiliev | Contabilidad |
Petrov | Suministro |
La relación inicial R1, si es necesario, se obtiene fácilmente como resultado de la operación de unir las relaciones R2 y R3.
formas normales | |
---|---|