3.1 Normalización de la base de datos

La forma normal es una propiedad de una relación en un modelo de datos relacionales que la caracteriza en términos de redundancia, lo que puede conducir a resultados lógicamente erróneos de muestreo o cambio de datos. La forma normal se define como el conjunto de requisitos que debe satisfacer una relación (tablas en una base de datos).

El proceso de convertir las relaciones de la base de datos a una forma que se ajuste a las formas normales se denomina normalización. El objetivo de la normalización es llevar la estructura de la base de datos a una forma que proporcione una redundancia lógica mínima y no pretende reducir o aumentar el rendimiento, ni reducir o aumentar el volumen físico de la base de datos .

El objetivo final de la normalización es reducir la inconsistencia potencial de la información almacenada en la base de datos. El propósito general del proceso de normalización es el siguiente:

  • exclusión de ciertos tipos de despidos;
  • corregir algunas anomalías de actualización;
  • el desarrollo de un proyecto de base de datos que sea una representación suficientemente “de alta calidad” del mundo real, sea intuitivo y pueda servir como una buena base para la expansión posterior;
  • simplificando el procedimiento para aplicar las restricciones de integridad necesarias.

La redundancia generalmente se elimina al descomponer las relaciones de tal manera que solo los hechos primarios se almacenan en cada relación (es decir, hechos que no se derivan de otros hechos almacenados).

Si bien las ideas de normalización son muy útiles para el diseño de bases de datos, de ninguna manera son un medio universal o exhaustivo para mejorar la calidad del diseño de una base de datos. Esto se debe al hecho de que hay demasiada variedad de posibles errores y deficiencias en la estructura de la base de datos que no se pueden eliminar mediante la normalización.

A pesar de estas consideraciones, la teoría de la normalización es un logro muy valioso de la teoría y la práctica relacional, ya que proporciona criterios científicamente rigurosos y sólidos para la calidad de un proyecto de base de datos y métodos formales para mejorar esta calidad. Esto hace que la teoría de la normalización se destaque de los enfoques de diseño puramente empíricos que se ofrecen en otros modelos de datos. Además, se puede argumentar que en todo el campo de las tecnologías de la información prácticamente no existen métodos para evaluar y mejorar las soluciones de diseño que sean comparables con la teoría de normalización de bases de datos relacionales en términos de nivel de rigor formal.

La normalización a veces se critica con el argumento de que "es solo sentido común" y cualquier profesional competente "naturalmente" diseñará una base de datos completamente normalizada sin tener que aplicar la teoría de la dependencia.

Sin embargo, como señaló el profesor Christopher Date, la normalización son precisamente los principios del sentido común que guían a un diseñador maduro en su mente, es decir, los principios de la normalización son el sentido común formalizado . Mientras tanto, identificar y formalizar los principios del sentido común es una tarea muy difícil, y el éxito en resolverlo es un logro significativo.

3.2 Primera forma normal

La primera forma normal (1NF) es la forma normal básica de una relación en el modelo de datos relacional.

Una variable de relación está en primera forma normal si y solo si, en cualquier valor válido de esa variable, cada tupla de relación contiene exactamente un valor para cada uno de los atributos.

En un modelo relacional, una relación siempre está en primera forma normal, por definición del concepto de relación.

En cuanto a las diversas tablas, es posible que no sean representaciones correctas de las relaciones y, en consecuencia, pueden no estar en 1FN. De acuerdo con la definición de Christopher Date para tal caso, una tabla está normalizada (equivalentemente, está en la primera forma normal) si y solo si es una representación directa y verdadera de alguna relación. Más concretamente, la tabla en cuestión debe cumplir las cinco condiciones siguientes:

  • No hay un orden de filas de arriba a abajo (en otras palabras, el orden de las filas no transmite ninguna información).
  • No hay un orden de izquierda a derecha de las columnas (en otras palabras, el orden de las columnas no contiene información).
  • Sin líneas duplicadas.
  • Cada intersección de una fila y una columna contiene exactamente un valor del dominio correspondiente (y nada más).
  • Todas las columnas son "normales".

La "regularidad" de todas las columnas de una tabla significa que no hay componentes "ocultos" en la tabla a los que solo se pueda acceder mediante la invocación de algún operador especial en lugar de hacer referencia a nombres de columnas normales, o que produzcan efectos secundarios para las filas. o tablas al invocar operadores estándar.

La tabla original no normalizada (es decir, no una representación correcta de alguna relación):

Empleado Número de teléfono
Ivanov II

283-56-82

390-57-34

Petrov P. P. 708-62-34
Sidorov SS

Una tabla reducida a 1NF, que es la representación correcta de alguna relación:

Empleado Número de teléfono
Ivanov II 283-56-82
Ivanov II 390-57-34
Petrov P. P. 708-62-34

3.3 Segunda forma normal

Una variable de relación está en segunda forma normal si y solo si está en primera forma normal y cada atributo no clave depende irreduciblemente de (cada) su clave candidata .

La irreductibilidad significa que la clave potencial no contiene un subconjunto más pequeño de atributos de los que también se puede derivar esta dependencia funcional. Para una dependencia funcional irreducible, a menudo se utiliza el concepto equivalente de "dependencia funcional total".

Si la clave candidata es simple, es decir, consta de un solo atributo, entonces cualquier dependencia funcional de ella es irreducible (completa). Si la clave candidata es una clave compuesta, entonces, de acuerdo con la definición de la segunda forma normal, no debe haber atributos no clave en la relación que dependan de parte de la clave candidata compuesta.

Un ejemplo de conversión de una relación a la segunda forma normal

Deje que el par de atributos {Sucursal de la empresa, Posición} formen la clave principal en la siguiente relación:

R
Sucursal de la empresa Título profesional Salario Disponibilidad de una computadora
Sucursal en Tomsk Limpiador 20000 No
Sucursal en Moscú Programador 40000 Comer
Sucursal en Tomsk Programador 25000 Comer

Digamos que el salario depende de la rama y el puesto, y la disponibilidad de una computadora depende solo del puesto.

Existe una dependencia funcional Posición -> Tener una computadora, en la que el lado izquierdo (determinante) es solo una parte de la clave primaria, lo que viola la condición de la segunda forma normal.

Para reducir a 2NF, la relación original debe descomponerse en dos relaciones:

R1
Sucursal de la empresa Título profesional Salario
Sucursal en Tomsk Limpiador 20000
Sucursal en Moscú Programador 40000
Sucursal en Tomsk Programador 25000
R2
Título profesional Disponibilidad de una computadora
Limpiador No
Programador Comer
Programador Comer

3.4 Tercera forma normal (3NF)

Una variable de relación R está en 3FN si y solo si se cumplen las siguientes condiciones:

  • Restá en la segunda forma normal.
  • sin atributo no claveRno está en dependencia funcional transitiva de la clave candidataR.

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 del conjunto de atributos Z del conjunto de atributos X (escrito X → Z, pronunciado “x determina z”) es transitiva si existe tal conjunto de atributos Y que X → Y e Y → Z. En este caso, ninguno de los conjuntos X, Y y Z no es un subconjunto del otro, es decir, las dependencias funcionales X → Z, X → Y e Y → Z no son triviales, y tampoco hay 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:

  • X contiene A (es decir, X → A es una dependencia funcional trivial)
  • X - superclave
  • A es un atributo clave (es decir, A es parte de una clave candidata).

La definición de Zaniolo define claramente la diferencia entre 3NF y la forma normal de Boyce-Codd (BCNF) más estricta: BCNF excluye 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 ".

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:

R1
Empleado Departamento Teléfono
Grishin Contabilidad 22-11-33
vasiliev Contabilidad 22-11-33
Petrov Suministrar 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 del potencial Empleado clave.

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 3NF:

R2
Departamento Teléfono
Contabilidad 22-11-33
Suministrar 44-55-66

R3
Empleado Departamento
Grishin Contabilidad
vasiliev Contabilidad
Petrov Suministrar

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.