¿Qué es la normalización de bases de datos?  ¿Cuáles son las formas normales?
HogarHogar > Noticias > ¿Qué es la normalización de bases de datos? ¿Cuáles son las formas normales?

¿Qué es la normalización de bases de datos? ¿Cuáles son las formas normales?

Dec 23, 2023

La normalización de la base de datos es un conjunto estructurado de pasos para diseñar de manera óptima un modelo de base de datos. A través de la normalización de bases de datos, los administradores de bases de datos, los ingenieros de datos y los arquitectos de datos pueden modelar y diseñar un marco para almacenar los datos de una aplicación de tal manera que la capa de la base de datos de la aplicación funcione con la máxima eficiencia.

En este contexto, el modelo de datos se refiere al conjunto de relaciones y entidades conceptuales específicas del caso de uso comercial que representan los datos. Por ejemplo, en el caso de datos bancarios minoristas, esto puede incluir transacciones financieras e información de cuentas de ahorro de clientes.

Dado que la mayoría de los sitios web y las aplicaciones de software dependen del almacenamiento de datos para funcionar de manera eficiente, la normalización de la base de datos sigue siendo un paso crucial en la gestión de datos.

Vale la pena señalar que también hay una sexta forma normal (6NF). Dicho esto, 6NF aún no está estandarizado, por lo que no lo he incluido en esta definición.

Lectura relacionada del diccionario técnico de Built In¿Qué es la arquitectura de datos?

El proceso de normalización de la base de datos es un paso crítico en la gestión de nuestra base de datos por muchas razones. La normalización de la base de datos nos ayuda a:

Las anomalías de la base de datos son errores que ocurren al modificar datos, como insertar, actualizar o eliminar valores o atributos de datos específicos. Estos cambios pueden generar datos incorrectos o faltantes. La normalización de los datos puede evitar que la base de datos sufra estos problemas durante las operaciones diarias.

Las dependencias funcionales son relaciones entre los atributos de la base de datos, que son las entidades conceptuales y físicas que representan los datos. El atributo de un cliente puede ser su número de teléfono o su domicilio.

Así es como funciona: un atributo (A) depende funcionalmente de otro atributo (B) cuando, al conocer el valor de B, puede determinar de manera única el valor de A. Este proceso no funciona a la inversa. En otras palabras, las dependencias funcionales representan relaciones entre datos. Estos se organizan o administran mejor a través de la normalización, un proceso que demostraré a continuación.

En el diseño de bases de datos, queremos evitar que muchas partes de la base de datos (y sus datos) dependan de varias otras partes de la base de datos. En otras palabras, queremos evitar un sistema fuertemente acoplado.

En un sistema estrechamente acoplado, una parte del sistema puede fallar o dejar de funcionar, lo que provoca que muchas otras partes se rompan, lo que en última instancia afecta negativamente el rendimiento de la base de datos.

La normalización ayuda a los administradores de bases de datos a lograr un sistema débilmente acoplado que es más modular y menos interdependiente. Este acoplamiento débil ayuda con el diagnóstico operativo y el análisis de la causa raíz de los problemas cuando inevitablemente ocurren.

Más Base de datos 101 de nuestros expertos¿Qué es una base de datos relacional?

En la gestión de bases de datos, las redundancias en su mayoría se refieren a tener datos duplicados en el sistema, lo que podemos evitar mediante la normalización. Es importante evitar la duplicación de datos, ya que puede ahorrarnos el dinero adicional y los recursos de almacenamiento necesarios para mantenerlos, además del riesgo de tener que actualizar/mantener la coherencia de los datos en varios lugares en lugar de simplificar el modelo de datos.

Un efecto secundario positivo de todo lo anterior es evitar errores, problemas del sistema y, en última instancia, incluso posibles tiempos de inactividad de la aplicación de software. El tiempo de inactividad del sistema puede ocurrir debido a fallas en la capa de la base de datos si los datos no se normalizan correctamente. Este aspecto conecta directamente la gestión y el almacenamiento adecuados de los datos de la aplicación en los sistemas back-end con la experiencia del cliente en el front-end y, en última instancia, el éxito en el mercado de la empresa propietaria de la aplicación.

Una base de datos normalizada también ayuda a lograr ganancias de eficiencia. Por ejemplo, es posible que su sistema necesite ejecutar un conjunto más pequeño de operaciones para modelar, servir y procesar los datos de los clientes. Un conjunto más pequeño de operaciones debido a datos bien normalizados también requiere menos poder de cómputo, lo que genera ahorros de costos en la infraestructura de software (o pila) en la que se ejecuta la aplicación de la base de datos. Por esta razón, la normalización de la base de datos también está directamente relacionada con el ahorro en costos operativos.

Ahora que comprendemos los beneficios de la normalización, repasemos los pasos para normalizar nuestras bases de datos. Nos referimos a estas como las formas normales.

En este paso, nuestros datos aún no están normalizados, por lo que están llenos de redundancias y aún en su forma original sin ninguna estructura o lógica de modelado aplicada.

Pasar de 0NF a 1NF implica:

Veamos un ejemplo de lo que se necesita para mover datos de 0NF a 1NF usando libros como nuestro conjunto de datos de muestra.

A continuación, puede ver que la tabla representa datos en forma normal cero porque cada libro almacena información de varios autores en diferentes atributos (Autor 1 y Autor 2), que son columnas repetidas de los mismos datos. Además, hay columnas como Nombre del autor que almacenan varios valores y esto debe corregirse.

Eliminamos las redundancias dividiendo los datos en una tabla de libros (y creando un identificador de ID de libro) y una tabla de autor de libros. La tabla de libros ahora tiene un identificador de ID de libro, mientras que la tabla de autor de libros almacena toda la información de ID de autor en una sola columna (ID de autor), además de atributos de autor adicionales (nombre del autor, género y ubicación geográfica).

Solo tenemos un libro en este ejemplo, pero la estructura se mantiene a medida que aumentamos la cantidad de libros que almacenamos.

Aprenda de los expertos de Built In¿Qué es una base de datos no relacional?

Pasar de 1NF a 2NF implica:

Estos datos no dependen completamente de la funcionalidad ya que, según la definición de dependencia funcional que analizamos anteriormente, no podemos determinar de manera única el nombre del autor en función de otros atributos, como la identificación del libro.

Esto se debe a que BookID tiene dos autores separados, lo que significa que debemos llevar correctamente los datos a su segunda forma normal.

Para determinar de forma única el valor de un atributo a partir del valor de su clave, dividimos aún más los datos y creamos la tabla Autores. Con los datos de este formulario, ahora podemos:

Pasar de 2NF a 3NF implica:

Una vez que reevaluamos los datos bajo las reglas de la tercera forma normal, notamos que hay un campo sin ID (Provincia) que determina de manera única el valor del atributo País. Por lo tanto, el País depende funcionalmente de la Provincia, una columna sin identificación.

Al eliminar esta dependencia, podemos obtener los datos en la tercera forma normal. Para hacer esto, creamos una tabla de Provincia con los valores de Provincia establecidos como Id. de Provincia y mantenemos el Id. de Provincia en la tabla de Autores. Finalmente, vinculamos los datos y evitamos la dependencia transitiva que vimos en la segunda forma normal.

Pasar de 3FN a la forma normal de Boyce-Codd implica:

La diferencia entre esta forma y la tercera forma normal es sutil. Como en la tercera forma normal, nos interesa principalmente eliminar las dependencias funcionales de los atributos no clave, mientras que aquí nos interesa eliminar las dependencias funcionales de los atributos clave potenciales.

En este punto, nuestros datos ya están extremadamente normalizados, por lo que ir más allá de este punto nos lleva al ámbito de la sobrenormalización, lo que significa normalizar hasta el punto de introducir problemas de rendimiento en la base de datos, ya que los datos están demasiado separados y en silos.

En la práctica, estas dos últimas formas no se utilizan. En teoría, están configurados para reducir aún más la cantidad de anomalías en la base de datos. Si desea profundizar en los detalles teóricos, aquí hay un par de recursos útiles:

En la práctica común, la primera forma normal a través de la forma normal de Boyce-Codd define el conjunto de pasos más utilizados para lograr los beneficios de la normalización. Las formas cuarta y quinta se encuentran más raramente en la práctica.

0NF — Forma normal cero 1NF — Primera forma normal 2NF — Segunda forma normal 3NF — Tercera forma normal Forma normal de Boyce-Codd 4NF y 5NF — Cuarta y quinta formas normales Cómo pasar de 0NF a 1NF Cómo pasar de 1NF a 2NF Cómo Ir de 2NF a 3NF