# Forma normal de dominio/clave

La forma normal de dominio/clave (DKNF) es una forma normal usada en normalización de bases de datos que requiere que la base de datos contenga restricciones de dominios y de claves.
Una restricción del dominio especifica los valores permitidos para un atributo dado, mientras que una restricción clave especifica los atributos que identifican únicamente una fila en una tabla dada.
Esta es el santo grial de la Base de datos y es alcanzado cuando cada restricción en la relación es una consecuencia lógica de la definición de claves y dominios, y, haciendo cumplir las restricciones y condiciones de la clave y del dominio, causa que sean satisfechas todas las restricciones. Así, esto evita todas las anomalías no-temporales.
Es mucho más fácil construir una base de datos en forma normal de dominio/clave que convertir pequeñas bases de datos que puedan contener numerosas anomalías. Sin embargo, construir con éxito una base de datos en forma normal de dominio/clave sigue siendo una tarea difícil, incluso para programadores experimentados de bases de datos. Así, mientras que la forma normal de dominio/clave elimina los problemas encontrados en la mayoría de las bases de datos, tiende para ser la forma normal más costosa de alcanzar. Sin embargo, el no poder alcanzar la forma normal de dominio/clave puede llevar costos ocultos a largo plazo, debido a anomalías que aparecen con el tiempo en las bases de datos que solamente se adhieren a formas normales más bajas.
Una violación de DKNF ocurre en la siguiente tabla:
    Persona rica DNI Persona rica Tipo de persona rica Valor neto en dólares 123 Millonario excéntrico 124,543,621 456 Multimillonario malvado 6,553,228,893 789 Multimillonario excéntrico 8,829,462,998 012 Millonario malvado 495,565,211
Asuma que el dominio para la DNI Persona rica consiste en los DNI's de toda la gente rica en una muestra predefinida de gente rica; el dominio para el Tipo de persona rica consiste de los valores 'Millonario excéntrico', 'Multimillonario excéntrico', 'Millonario malvado', y 'Multimillonario malvado'; y el dominio para el Valor neto en dólares consiste de todos los números enteros mayor que o igual a 1.000.000.
Hay una restricción que liga el Tipo de persona rica al Valor neto en dólares, incluso aunque no podamos deducir uno del otro. La restricción dicta que un Millonario excéntrico o Millonario malvado tendrá un valor neto de 1.000.000 a 999.999.999 inclusive, mientras que un Multimillonario excéntrico o un Multimillonario malvado tendrá un valor neto de 1.000.000.000 o más. Esta restricción no es ni una restricción de dominio ni una restricción de clave; por lo tanto no podemos confiar en las restricciones de dominio y las de clave para garantizar que una combinación de anómala de Tipo de persona rica / Valor neto en dólares no tenga cabida en la base de datos.
La violación de la DKNF podría ser eliminada alterando dominio Tipo de persona rica para hacer que sea consistente con solo dos valores, 'Malvado' y 'Excéntrico' (el estatus de persona rica como un millonario o un multimillonario es implícito en su Valor neto en dólares, así que no se pierde ninguna información útil).
    Persona rica DNI Persona rica Tipo de persona rica Valor neto en dólares 123 Excéntrico 124,543,621 456 Malvado 6,553,228,893 789 Excéntrico 8,829,462,998 012 Malvado 495,565,211
    Estado de riqueza Estado Mínimo Máximo Millonario 1,000,000 999,999,999 Multimillonario 1,000,000,000 999,999,999,999
DKNF es frecuentemente difícil de alcanzar en la práctica.