La normalización es el proceso de convertir datos complejos en un conjunto de estructuras de datos más pequeñas que no sólo son más simples y estables, sino también más fáciles de mantener. La normalización también puede entenderse como un conjunto de reglas que ayudan a los diseñadores de bases de datos a diseñar un esquema que minimice los problemas lógicos. La normalización se utiliza porque el estilo antiguo de colocar todos los datos en un solo lugar, como un archivo o una tabla de base de datos, es ineficiente y genera errores lógicos al intentar manipular los datos.
Básicamente, hay tres niveles de normalización: Primera Forma Normal (1NF), Segunda Forma Normal (2NF) y Tercera Forma Normal (3NF). Cada una de estas formas tiene sus propias reglas. Cuando la base de datos alcanza un cierto nivel, se considera normalizada a esta forma normalizada.
Grados de normalización
- Primera Forma Normal (1FN): Incluye la eliminación de todos los grupos repetidos.
- Segunda Forma Normal (2FN): Asegura que todas las columnas que no son llave sean completamente dependientes de la llave primaria (PK).
- Tercera Forma Normal (3FN): Elimina cualquier dependencia transitiva. Una dependencia transitiva es aquella en la cual las columnas que no son llave son dependientes de otras columnas que tampoco son llave.
Primera forma normal (1FN)
La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas.
Convertir la base de datos al formato normal primero resuelve el problema de tener múltiples encabezados de columna. Es muy común que los diseñadores de bases de datos sin experiencia hagan algo similar a una tabla desnormalizada. Crearán columnas que representen los mismos datos una y otra vez. La estandarización ayuda a aclarar la base de datos y organizarla en partes más pequeñas y más fáciles de entender. En lugar de entender una mesa monolítica gigante con muchos aspectos diferentes, simplemente necesitamos entender objetos más pequeños y tangibles y sus relaciones con otros objetos pequeños.
Un dato sin normalizar no cumple con ninguna regla de normalización. Para explicar con un ejemplo en que consiste, vamos a considerar los datos de la siguiente tabla.
Aplicando la primera forma:
- Tenemos que eliminar los grupos repetidos.
- Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo repetido
- Los registros quedan ahora conformados en dos tablas que llamaremos ORDENES y ARTICULOS_ORDENES
Segunda forma normal (2FN)
La segunda forma normal (2FN) se encarga de eliminar todas las dependencias parciales.
Características:
- Se debe cumplir la primera forma normal.
- Todos los atributos no claves deben depender de la clave primaria completa.
¿Qué necesitamos para estar en 2FN?
A continuación, lo veremos en el siguiente ejemplo.
En esta tabla podemos ver todas las películas disponibles en el cine.
La clave primaria es (Titulo + formato). Las dependencias funcionales correctas, deberían lucir así:
- Titulo + Formato -> Director
- Titulo + Formato -> Precio
- Titulo + Formato -> Duración
- Titulo + Formato -> Puntuación
- Titulo + Formato -> Productora
Sin embargo, las dependencias no son esas… Sino estas:
- Titulo -> Director
- Titulo + Formato -> Precio
- Titulo -> Duración
- Titulo -> Puntuación
- Titulo -> Productora
Casi todas las columnas dependen funcionalmente de título y solamente el Precio depende de la clave primaria compuesta completa.
Esto es un problema de dependencias parciales, porque los atributos dependen de una parte de la clave y no de la clave primaria completa (Titulo + Formato)
Por consecuente no cumplimos con la segunda forma normal.
Ahora separamos la tabla.
Ahora sí, la tabla de películas tiene una sola clave primaria y todos sus campos dependen ella.
Y la tabla de precios tiene su clave primaria compuesta, y depende completamente.
Tercera forma normal (3FN)
La tercera forma normal (3NF) es un principio fundamental en el diseño de bases de datos relacionales. Se utiliza para organizar la información de manera eficiente, reducir la redundancia de datos y evitar problemas de actualización anómala. Una base de datos está en tercera forma normal si cumple con las reglas de la primera forma normal (1NF) y la segunda forma normal (2NF), además de algunas reglas adicionales.
Las reglas específicas para la tercera forma normal son las siguientes:
- Cumplir con la 2NF: La base de datos debe cumplir con la segunda forma normal.
- Eliminar dependencias transitivas: No debe haber dependencias transitivas no triviales. Una dependencia transitiva ocurre cuando un atributo no clave depende de otro atributo no clave en lugar de depender directamente de la clave primaria.
Por lo tanto, el pasar de 2FN a 3Fn implica la eliminación de las dependencias transitivas en las relaciones, al eliminar los atributos que dependen transitivamente estaremos creando una nueva relación, de estos más el atributo determinante.
Vamos a explicar esto con un ejemplo. Supongamos que tenemos una tabla llamada "Empleados" con los siguientes atributos:
- EmpleadoID (clave primaria)
- Nombre
- DepartamentoID
- NombreDepartamento
En este caso, la dependencia transitiva sería que el atributo "NombreDepartamento" depende de "DepartamentoID" en lugar de depender directamente de la clave primaria "EmpleadoID". Para corregir esto y cumplir con la tercera forma normal, podríamos dividir la tabla en dos:
De esta manera, eliminamos la dependencia transitiva y cumplimos con la tercera forma normal.
En resumen, la tercera forma normal es una etapa adicional en el diseño de bases de datos relacionales que busca garantizar la integridad y eficiencia de los datos, eliminando dependencias transitivas y asegurándose de que la información esté organizada de manera lógica y sin redundancias innecesarias.
Normalización más allá de la 3FN
La mayoría de las tablas 3NF están libres de anomalías de actualización, inserción y borrado. Ciertos tipos de tablas 3NF, que en la práctica raramente se encuentran, son afectadas por tales anomalías; éstas son tablas que no satisfacen la forma normal de Boyce-Codd (BCNF) o, si satisfacen la BCNF, son insuficientes para satisfacer las formas normales más altas 4NF o 5NF.