CodeGym /Cursos /SQL SELF /Introducción a la normalización de datos

Introducción a la normalización de datos

SQL SELF
Nivel 25, Lección 0
Disponible

¿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:

  1. 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.
  2. 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.
  3. Simplificar la estructura de los datos. Cuanto más simple es la estructura, más fácil es gestionarla.
  4. 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 Lin aparece 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:

  1. En bases de datos analíticas, donde lo importante es la velocidad de las consultas, no tanto minimizar el tamaño de los datos.
  2. 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.
  3. 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!

2
Tarea
SQL SELF, nivel 25, lección 0
Bloqueada
Trabajo con tablas reales
Trabajo con tablas reales
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION