DevPath · Aprende a programar ESPTEN

Diseño, normalización y modificación de datos

Normalización: 1NF, 2NF y 3NF

¿Por qué normalizar?

La normalización es el proceso de organizar las columnas y tablas para eliminar la redundancia (datos repetidos) y evitar las anomalías:

Se avanza por formas normales acumulativas: para estar en 3NF hay que cumplir antes 1NF y 2NF.

Primera forma normal (1NF)

Una tabla está en 1NF si:

❌ No 1NF ✅ 1NF
telefonos = '600, 611' una fila por teléfono en una tabla aparte

Segunda forma normal (2NF)

Una tabla está en 2NF si está en 1NF y, además, ningún atributo no clave depende solo de una parte de una clave primaria compuesta (no hay dependencias parciales).

Solo es relevante cuando la PK es compuesta. Ejemplo: en linea_pedido(pedido_id, producto_id, nombre_producto), el nombre_producto depende solo de producto_id, no de la clave completa → viola 2NF. La solución: mover nombre_producto a la tabla productos.

Tercera forma normal (3NF)

Una tabla está en 3NF si está en 2NF y ningún atributo no clave depende de otro atributo no clave (no hay dependencias transitivas).

Ejemplo que viola 3NF:

pedido_id cliente_id cliente_ciudad

Aquí cliente_ciudad depende de cliente_id (no de la PK pedido_id). Si Ana cambia de ciudad hay que actualizar todos sus pedidos. La solución es separar: la ciudad vive en la tabla clientes, y pedidos solo guarda cliente_id.

En resumen, 3NF = "cada atributo no clave depende de la clave, de toda la clave y de nada más que la clave". Es el objetivo razonable para la mayoría de esquemas de aplicación.

Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Diseño relacional: claves y relacionesModificar datos: INSERT, UPDATE, DELETE y restricciones →