Normalización en el diseño de base de datos

La normalización ayuda a evitar redundancias e incoherencias en los datos. Hay varias formas de normalización.

Después de definir las entidades y decidir sus atributos, se normalizan para evitar redundancias. Una entidad está normalizada si cumple un conjunto de restricciones para una forma normal determinada, que se describe en esta información. Las entidades pueden tener las formas normales primera, segunda, tercera y cuarta, cada una de las cuales tiene unas determinadas reglas asociadas. En algunos casos, el usuario sigue estas reglas y, en otros casos, no las sigue.

Las reglas para la forma normal son acumulativas. Es decir, para que una entidad cumpla las reglas de la segunda forma normal, también debe cumplir las reglas de la primera forma normal. Una entidad que cumple las reglas de la cuarta forma normal también cumple las reglas de la primera, segunda y tercera forma normal.

En el contexto de creación de modelos de datos lógicos, una instancia es una aparición concreta. Una instancia de una entidad es un conjunto de valores de datos para todos los atributos que corresponden a la entidad.

Por ejemplo, la figura siguiente muestra una instancia de la entidad EMPLOYEE.
Figura 1. Instancia de una entidad
Comenzar descripción de figura. Esta figura muestra una instancia de una entidad. Finalizar descripción de figura.
Primera forma normal
Una entidad relacional satisface el requisito de primera forma normal si cada instancia de la entidad contiene solo un valor, pero nunca varios atributos de repetición.

Los atributos repetitivos, a menudo denominados grupo repetitivo, son atributos diferentes que son inherentemente iguales. En una entidad que cumple el requisito de la primera forma normal, cada atributo es independiente y exclusivo en su significado y en su nombre. Por ejemplo, supongamos que una entidad contiene los siguientes atributos:

EMPLOYEE_NUMBER
JANUARY_SALARY_AMOUNT
FEBRUARY_SALARY_AMOUNT
MARCH_SALARY_AMOUNT

Esta situación viola el requisito de primera forma normal, puesto que JANUARY_SALARY_AMOUNT, FEBRUARY_SALARY_AMOUNT y MARCH_SALARY_AMOUNT son esencialmente el mismo atributo, EMPLOYEE_MONTHLY_SALARY_AMOUNT.

Segunda forma normal
Una entidad está en segunda forma normal si cada atributo que no está en la clave primaria proporciona un hecho que depende de toda la clave. Se infringe el segundo formulario normal cuando un atributo de clave no primaria es un hecho sobre un subconjunto de una clave compuesta. Por ejemplo, una entidad de inventario registra cantidades de partes específicas que se almacenan en almacenes particulares. La figura siguiente muestra los atributos de la entidad de inventario.
Figura 2. Clave primaria que viola la segunda forma normal
Comenzar descripción de figura. Esta figura muestra una clave
primaria que viola la segunda forma normal. Finalizar descripción de figura.

En este caso, la clave primaria consta de los atributos PART y WAREHOUSE juntos. Debido a que el atributo WAREHOUSE_ADDRESS tan solo depende del valor de WAREHOUSE, la entidad viola la regla para la segunda forma normal. Este diseño puede causar varios problemas:

  • Cada instancia de un componente almacenado en este almacén repite la dirección del almacén.
  • Si la dirección del almacén cambia, debe actualizarse cada instancia que hace referencia a un componente almacenado en dicho almacén.
  • Debido a la repetición, los datos pueden resultar incoherentes. Instancias diferentes podrían mostrar direcciones diferentes para el mismo almacén.
  • Si en cualquier momento el almacén no almacena ningún componente, es posible que la dirección del almacén no exista en ninguna instancia de la entidad.

Para cumplir la segunda forma normal, la información de la figura anterior estaría en dos entidades, tal como muestra la figura siguiente.

Figura 3. Dos entidades que cumplen la segunda forma normal
Comenzar descripción de figura. Esta figura muestra dos entidades
que cumplen la segunda forma normal. Finalizar descripción de figura.
Tercera forma normal
Una entidad está en tercer formulario normal si cada atributo de clave no primaria proporciona un hecho que es independiente de otros atributos no clave y depende solo de la clave.

Se infringe el tercer formulario normal cuando un atributo no primario es un hecho sobre otro atributo no clave. Por ejemplo, la primera entidad de la figura siguiente contiene los atributos EMPLOYEE_NUMBER y DEPARTMENT_NUMBER. Suponga que un programa o un usuario añade un atributo, DEPARTMENT_NAME, a la entidad. El nuevo atributo depende de DEPARTMENT_NUMBER, mientras que la clave primaria está en el atributo EMPLOYEE_NUMBER. Ahora la entidad viola la tercera forma normal.

El cambio del valor de DEPARTMENT_NAME basado en la actualización de un único empleado, David Brown, no cambia el valor de DEPARTMENT_NAME para otros empleados del departamento. La versión actualizada de la entidad de la figura siguiente ilustra la incoherencia resultante. Adicionalmente, la actualización de DEPARTMENT_NAME en esta tabla no lo actualiza en otra tabla que puede contener una columna DEPARTMENT_NAME.

Figura 4. La actualización de una entidad no normalizada. La información de la entidad se ha vuelto incoherente.
Comenzar descripción de figura. Esta figura muestra una entidad sin normalizar. Finalizar descripción de figura.

Puede normalizar la entidad modificando la entidad EMPLOYEE_DEPARTMENT y creando dos entidades nuevas: EMPLOYEE y DEPARTMENT. La figura siguiente muestra las entidades nuevas. La entidad DEPARTMENT contiene atributos para DEPARTMENT_NUMBER y DEPARTMENT_NAME. Ahora bien, una actualización en la que se cambia un nombre de departamento es mucho más fácil. Tan solo debe realizar la actualización en la entidad DEPARTMENT.

Figura 5. Entidades normalizadas: EMPLOYEE, DEPARTMENT y EMPLOYEE_DEPARTMENT
Comenzar descripción de figura. Esta figura muestra una entidad normalizada. Finalizar descripción de figura.
Cuarta forma normal
Una entidad pertenece a la cuarta forma normal si ninguna instancia contiene dos o más hechos de varios valores independientes sobre una entidad.

Por ejemplo, considere la entidad EMPLOYEE. Cada instancia de EMPLOYEE podría tener SKILL_CODE y LANGUAGE_CODE. Un empleado puede tener varias habilidades y varios idiomas. Existen dos relaciones, una entre empleados y habilidades y otra entre empleados e idiomas. Una entidad no pertenece a la cuarta forma normal si representa ambas relaciones, como muestra la figura siguiente.

Figura 6. Entidad que viola la cuarta forma normal
Comenzar descripción de figura. Esta figura muestra una entidad que viola la cuarta forma normal. Finalizar descripción de figura.

En lugar de ello, puede evitar esta violación creando dos entidades que representen a ambas relaciones, como muestra la figura siguiente.

Figura 7. Entidades que pertenecen a la cuarta forma normal
Comenzar descripción de figura. Esta figura muestra entidades que pertenecen a la cuarta forma
normal. Finalizar descripción de figura.

Sin embargo, si los hechos son interdependientes (es decir, el empleado aplica determinados idiomas únicamente a determinadas habilidades) no debería dividir la entidad.

Puede colocar cualquier dato en la cuarta forma normal. Una regla correcta que debe seguir al realizar diseño de bases de datos lógicas consiste en organizar todos los datos de las entidades que pertenecen a la cuarta forma normal. A continuación, decida si el resultado produce un nivel aceptable de rendimiento. Si el rendimiento no es aceptable, la desnormalización del diseño es una buena técnica para mejorar el rendimiento.