IOKELU
Nivel: Avanzado
💡 Prueba estructuras normalizadas:
Puedes ejecutar cualquier consulta de normalización en nuestra consola interactiva: Abrir consola SQL →

Normalización avanzada en SQL: diseño profesional de bases de datos

La normalización es el proceso de estructurar una base de datos para eliminar redundancias, mejorar la integridad y optimizar el almacenamiento. En esta guía exploramos formas normales avanzadas y casos reales.

1. Primera forma normal (1FN)

Reglas:


-- Incorrecto
productos(id, nombre, colores)

-- Correcto
producto_colores(producto_id, color)
    

2. Segunda forma normal (2FN)

Aplica cuando hay claves compuestas. No debe haber dependencias parciales.


-- Incorrecto
ventas(producto_id, cliente_id, producto_nombre)

-- Correcto
productos(id, nombre)
ventas(producto_id, cliente_id)
    

3. Tercera forma normal (3FN)

No debe haber dependencias transitivas.


-- Incorrecto
usuarios(id, ciudad_id, ciudad_nombre)

-- Correcto
ciudades(id, nombre)
usuarios(id, ciudad_id)
    

4. BCNF (Boyce‑Codd)

Versión más estricta de 3FN. Cada determinante debe ser clave candidata.


-- Ejemplo típico
profesor_curso(profesor, curso, aula)

-- Si profesor → aula
-- Entonces aula depende de profesor, no del curso
    

5. Cuarta forma normal (4FN)

Elimina dependencias multivaluadas.


-- Incorrecto
empleado(id, habilidad, idioma)

-- Correcto
empleado_habilidad(empleado_id, habilidad)
empleado_idioma(empleado_id, idioma)
    

6. Quinta forma normal (5FN)

Elimina dependencias de unión. Se usa en modelos altamente complejos.


-- Ejemplo conceptual
relacion(a, b, c)
-- Se divide en tres tablas si las dependencias lo permiten
    

7. Ejemplos prácticos


-- Normalización de pedidos
pedidos(id, cliente_id, fecha)
clientes(id, nombre)
pedido_items(pedido_id, producto_id, cantidad)
productos(id, nombre, precio)
    

8. Ejercicios para practicar

9. Mini‑proyecto: Base de datos empresarial normalizada


-- Estructura final
empleados(id, nombre, ciudad_id)
ciudades(id, nombre)
empleado_habilidad(empleado_id, habilidad)
empleado_idioma(empleado_id, idioma)
    

10. Errores comunes

11. Preguntas frecuentes

¿Normalizar siempre mejora el rendimiento?

No, a veces aumenta la cantidad de JOINs.

¿BCNF es obligatorio?

No, depende del caso de uso.


Siguiente guía

SQL Avanzado – Desnormalización →