La forma normal de clave de dominio ( DK / NF ) es una forma normal utilizada en la normalización de bases de datos que requiere que la base de datos no contenga más restricciones que las restricciones de dominio y las restricciones de clave.
Una restricción de dominio especifica los valores permitidos para un atributo dado, mientras que una restricción de clave especifica los atributos que identifican de forma única una fila en una tabla determinada.
La forma normal de dominio / clave se logra cuando cada restricción en la relación es una consecuencia lógica de la definición de claves y dominios, y la aplicación de restricciones y condiciones de clave y dominio hace que se cumplan todas las restricciones. Por tanto, evita todas las anomalías intemporales.
La razón para usar la forma normal de dominio / clave es evitar tener restricciones generales en la base de datos que no sean restricciones claras de dominio o clave. La mayoría de las bases de datos pueden probar fácilmente las restricciones de dominio y clave en los atributos. Sin embargo, las restricciones generales normalmente requerirían una programación especial de la base de datos en forma de procedimientos almacenados (a menudo de la variedad desencadenante) que son costosos de mantener y costosos para la base de datos de ejecutar. Por lo tanto, las restricciones generales se dividen en restricciones de dominio y clave.
Es mucho más fácil construir una base de datos en forma normal de dominio / clave que convertir bases de datos menores que pueden contener numerosas anomalías. Sin embargo, construir con éxito una base de datos de dominio / clave en formato normal sigue siendo una tarea difícil, incluso para programadores de bases de datos experimentados. Por lo tanto, mientras que la forma normal de dominio / clave elimina los problemas que se encuentran en la mayoría de las bases de datos, tiende a ser la forma normal más costosa de lograr. Sin embargo, no lograr la forma normal de dominio / clave puede conllevar costos ocultos a largo plazo debido a anomalías que aparecen en las bases de datos que se adhieren solo a formas normales más bajas a lo largo del tiempo.
La tercera forma normal , la forma normal de Boyce-Codd , la cuarta forma normal y la quinta forma normal son casos especiales de la forma normal de dominio / clave. Todos tienen dependencias funcionales, de varios valores o de unión que se pueden convertir en superclaves. Los dominios en esas formas normales no estaban restringidos, por lo que se satisfacen todas las restricciones de dominio. Sin embargo, transformar una forma normal superior en una forma normal de dominio / clave no siempre es una transformación que preserva la dependencia y, por lo tanto, no siempre es posible.
Ejemplo
Se produce una infracción de DKNF en la siguiente tabla:
Persona rica | Tipo de persona rica | Valor neto en dólares |
---|---|---|
Steve | Millonario | 124,543,621 |
Roderick | Multimillonario | 6.553.228.893 |
Katrina | Multimillonario | 8.829.462.998 |
Gary | Millonario | 495,565,211 |
(Suponga que el dominio de Persona rica consiste en los nombres de todas las personas ricas en una muestra predefinida de personas ricas; el dominio de Tipo de persona adinerada consiste en los valores 'Millonario' y 'Multimillonario'; y el dominio de Valor neto en dólares consta de todos los números enteros mayores o iguales a 1.000.000).
Existe una restricción que vincula el tipo de persona adinerada con el valor neto en dólares, aunque no podemos deducir uno del otro. La restricción dicta que un millonario tendrá un patrimonio neto de 1.000.000 a 999.999.999 inclusive, mientras que un multimillonario tendrá un patrimonio neto de 1.000.000.000 o más. Esta restricción no es una restricción de dominio ni una restricción clave; por lo tanto, no podemos confiar en restricciones de dominio y restricciones clave para garantizar que una combinación inconsistente de Tipo de persona rica / Valor neto en dólares no ingrese a la base de datos.
La violación de DKNF podría eliminarse eliminando la columna Tipo de persona adinerada. El estado de la persona rica como millonario o multimillonario está determinado por su valor neto en dólares, como se define en la tabla Estado de riqueza, por lo que no se pierde información útil.
Persona rica | Valor neto en dólares |
---|---|
Steve | 124,543,621 |
Roderick | 6.553.228.893 |
Katrina | 8.829.462.998 |
Gary | 495,565,211 |
Estado | Mínimo | Máximo |
---|---|---|
Millonario | 1,000,000 | 999,999,999 |
Multimillonario | 1.000.000.000 | 999,999,999,999 |
Llaves extranjeras
Las relaciones que son imposibles de expresar como claves externas son violaciones obvias de DKNF. Por ejemplo, un atributo "ID de padre" que apunta a una de varias tablas referenciadas, dependiendo de un segundo atributo de "Tipo de padre", infringe DKNF.
Ver también
Referencias
- Fagin, Ronald (1981). "Una forma normal para bases de datos relacionales que se basa en dominios y claves" (PDF) . Transacciones ACM en sistemas de bases de datos . 6 (3): 387–415. CiteSeerX 10.1.1.73.373 . doi : 10.1145 / 319587.319592 .
enlaces externos
- Conceptos básicos de normalización de bases de datos por Mike Chapple (About.com)
- Introducción a la normalización de bases de datos por Mike Hillyer.
- Normalización por ITS, Universidad de Texas.
- Un tutorial sobre las primeras 3 formas normales de Fred Coulson
- Descripción de los conceptos básicos de normalización de bases de datos por Microsoft