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.
Tabla de contenidos
1. Primera forma normal (1FN)
Reglas:
- No valores repetidos.
- No listas dentro de columnas.
- Datos atómicos.
-- 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
- Normaliza una tabla con listas.
- Elimina dependencias parciales.
- Detecta dependencias transitivas.
- Divide una tabla multivaluada.
- Explica BCNF con tus palabras.
-- Listas → tabla separada
producto_colores(producto_id, color)
-- Dependencia parcial
productos(id, nombre)
ventas(producto_id, cliente_id)
-- Transitiva
ciudades(id, nombre)
usuarios(id, ciudad_id)
-- Multivaluada
empleado_habilidad(...)
empleado_idioma(...)
-- BCNF: cada determinante debe ser clave candidata.
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
- Normalizar en exceso.
- No identificar claves candidatas.
- Ignorar dependencias multivaluadas.
- Confundir 3FN con BCNF.
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.