# Normalización de bases de datos

> Ordenar las tablas para que cada dato esté guardado en un solo lugar.

- Nivel: Intermedio
- Temas: Datos
- URL: https://tidbit.legios.com.ar/es/database-normalization/
- En inglés: [Database normalization](https://tidbit.legios.com.ar/database-normalization/)

La **normalización de bases de datos** es una forma de diseñar las tablas de una base de datos relacional para que cada dato viva en un único lugar. Imaginá una tabla de pedidos donde cada fila repite el nombre, el mail y la dirección del cliente. Si el cliente se muda, tenés que actualizar cincuenta filas, y si te salteás una, la base pasa a contradecirse sola.

Normalizar es partir esa tabla en dos: una tabla de clientes con cada cliente una sola vez, y una de pedidos que solo guarda el id del cliente, una clave foránea que apunta a la tabla de clientes. Para ver los pedidos con las direcciones, las volvés a unir en una consulta con un join. Las reglas de hasta dónde partir se llaman **formas normales**; en la práctica, la mayoría de los diseños apunta a la **tercera forma normal** (3FN), que más o menos quiere decir que cada columna depende de la clave de la fila y de nada más.

La normalización le sienta bien a los sistemas que escriben mucho, como el sistema de pedidos de una tienda, porque cada actualización toca una sola fila y los datos quedan consistentes. El análisis de datos va para el otro lado: los data warehouses muchas veces **desnormalizan** a propósito, repitiendo datos en tablas anchas o en un esquema en estrella para que los reportes necesiten menos joins y anden más rápido. Las dos son decisiones de diseño, no una correcta y otra incorrecta.

## Una analogía

Como guardar la dirección de un amigo en los contactos del celular en vez de escribirla en cada recordatorio de cumpleaños. Si se muda, la cambiás una vez y todos los recordatorios quedan bien.

## Para quedarse

- Cada dato se guarda una vez; las otras tablas lo apuntan con claves.
- Evita contradicciones cuando se actualizan los datos.
- La mayoría de los diseños apunta a la tercera forma normal (3FN).
- El análisis de datos suele desnormalizar a propósito para leer más rápido.

## Para seguir leyendo

- [Normalización de bases de datos en Wikipedia](https://es.wikipedia.org/wiki/Normalizaci%C3%B3n_de_bases_de_datos)

## Términos relacionados

- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [Claves primarias y foráneas](https://tidbit.legios.com.ar/es/primary-and-foreign-keys/): La clave primaria identifica cada fila; la foránea apunta a una fila de otra tabla.
- [Data warehouse](https://tidbit.legios.com.ar/es/data-warehouse/): Una base hecha para analizar: años de historia, de muchas fuentes, en un solo lugar.
- [Esquema en estrella](https://tidbit.legios.com.ar/es/star-schema/): Diseño de data warehouse: una tabla de eventos al centro y tablas descriptivas alrededor.
