¿Alguna vez has visto una tabla de base de datos que parece un trastero? En una celda hay una lista de teléfonos, en otra — direcciones escritas en una sola frase larga, en la tercera — varias fechas separadas por comas. Ese "caos" hace que buscar, actualizar y gestionar los datos sea un dolor de cabeza. Pero hay un camino hacia el orden. Se llama normalización de datos.
Dicho fácil, la normalización de datos es el proceso de organizar los datos en tablas de tal manera que se minimice la redundancia y se eliminen los problemas relacionados con actualizar, borrar e insertar datos.
Estos son los problemas que resuelve la normalización de datos:
- Eliminar duplicados de datos. ¿Por qué deberíamos guardar la misma info dos veces? ¿O tres? Eso hace que la base pese más y puede causar inconsistencias.
- Minimizar anomalías. ¿Sabes cómo en la vida real a veces hay anomalías? Por ejemplo, te olvidas de borrar a un excompañero de la lista de contactos. En bases de datos pasa igual. La normalización ayuda a evitar esos momentos incómodos.
- Simplificar la estructura de los datos. Cuanto más simple es la estructura, más fácil es gestionarla.
- Acelerar la base de datos. Menos datos — consultas más rápidas.
¿Y si no normalizamos?
Sin normalización, los datos en la base se vuelven "pegajosos" — siempre arrastran trozos de info que sobran.
Imagina la tabla Estudiantes:
| ID de Estudiante | Nombre | Cursos |
|---|---|---|
| 1 | Otto Lin | Matemáticas, Física |
| 2 | Anna Song | Química |
| 3 | Otto Lin | Biología, Química |
¿Qué puede salir mal?
- Duplicación de datos:
Otto Linaparece varias veces. ¿Por qué? Porque está en varios cursos. - Difícil actualizar la información: si el número de teléfono de Otto Lin cambia, tenemos que buscar todas las filas con su nombre para actualizarlo.
- Borrar datos puede romper la integridad: imagina que Otto decide dejar los cursos. Si borramos todas sus filas, perdemos toda la info sobre él, incluido el nombre.
¿Cuándo puede ser excesiva la normalización?
Seamos sinceros, la normalización es como un horario estricto: siempre está bien, pero a veces apetece improvisar. De hecho, hay casos donde la desnormalización es mejor:
- En bases de datos analíticas, donde lo importante es la velocidad de las consultas, no tanto minimizar el tamaño de los datos.
- Cuando la estructura se vuelve demasiado compleja: si para cumplir las formas normales tenemos que manejar decenas de tablas, las consultas se vuelven cada vez más pesadas.
- Para agregados que se usan mucho: si siempre calculas la misma suma, mejor guardarla.
Por ejemplo, tenemos una tienda online. Si los usuarios buscan mucho la suma total de pedidos, puedes guardar esa suma directamente en la tabla Pedidos en vez de recalcularla cada vez.
Pero ojo, la desnormalización es un compromiso. Aumenta la posibilidad de errores al actualizar los datos.
Ejemplos de una estructura problemática y su normalización
Vamos a ver un ejemplo de tabla antes de normalizar:
| ID de Pedido | Cliente | Productos | Suma del pedido |
|---|---|---|---|
| 1 | Otto Lin | Móvil, Auriculares | 20000 |
| 2 | Anna Song | Frigorífico | 30000 |
| 3 | Otto Lin | Televisor | 40000 |
Aquí se ve claramente el problema:
- Los datos de los clientes se repiten.
- Los productos están en una lista — eso rompe el principio de atomicidad de los datos.
Después de normalizar
Dividimos la tabla en tres: Tabla Clientes
| ID de Cliente | Nombre |
|---|---|
| 1 | Otto Lin |
| 2 | Anna Song |
Tabla Productos
| ID de Producto | Nombre | Precio |
|---|---|---|
| 1 | Móvil | 10000 |
| 2 | Auriculares | 10000 |
| 3 | Frigorífico | 30000 |
| 4 | Televisor | 40000 |
Tabla Pedidos
| ID de Pedido | ID de Cliente | ID de Producto |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 1 | 2 |
| 2 | 2 | 3 |
| 3 | 1 | 4 |
Ahora tenemos:
- No hay duplicados de datos.
- Cada producto está en una fila separada.
- Podemos añadir nuevos productos y pedidos fácilmente.
La normalización es el arte de crear orden a partir del caos. Sí, a veces puede parecer demasiado estricta y exigente, pero su objetivo final merece la pena. En las siguientes lecciones vamos a estudiar las formas normales una a una: primero 1NF, luego 2NF y por último 3NF. ¡Vamos, al mundo de los datos ordenados!
GO TO FULL VERSION