Skip to content
SP StackPractices
intermediate Por StackPractices

Normalización de Bases de Datos — 1NF a 5NF Explicado

Guía visual de normalización de bases de datos: aprende 1NF a 5NF con ejemplos prácticos, cuándo aplicar cada forma y cómo balancear normalización con rendimiento.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Overview

La normalización de bases de datos es el proceso de organizar datos para minimizar la redundancia y eliminar anomalías durante operaciones de inserción, actualización y eliminación. Las formas normales — desde 1NF hasta 5NF — proporcionan reglas progresivas para estructurar bases de datos relacionales. Entender cuándo aplicar cada forma, y cuándo romperlas intencionalmente por rendimiento, separa a diseñadores competentes de excepcionales.

When to Use

  • Diseñar esquemas relacionales desde cero
  • Refactorizar bases de datos legacy con datos duplicados
  • Preparar esquemas para cargas transaccionales (OLTP)
  • Antes de decidir qué desnormalizar para reportes (OLAP)

1NF — Valores Atómicos

Regla: Cada columna contiene solo valores atómicos (indivisibles). Sin grupos repetidos.

Antes (viola 1NF):

order_idcustomerproducts
1AliceApple, Banana, Cherry

Después (cumple 1NF):

order_idcustomerproduct
1AliceApple
1AliceBanana
1AliceCherry

2NF — Sin Dependencias Parciales

Regla: Todos los atributos no-clave dependen de la clave primaria completa (relevante para claves compuestas).

Antes (viola 2NF):

course_idstudent_idcourse_namestudent_namegrade
CS101S1Intro to CSAliceA

course_name depende solo de course_id; student_name solo de student_id.

Después (cumple 2NF):

Enrollments:

course_idstudent_idgrade
CS101S1A

Courses:

course_idcourse_name
CS101Intro to CS

Students:

student_idstudent_name
S1Alice

3NF — Sin Dependencias Transitivas

Regla: Los atributos no-clave dependen solo de la clave primaria, no de otros atributos no-clave.

Antes (viola 3NF):

employee_idnamedepartment_iddepartment_namedepartment_head
E1BobD1EngineeringCarol

department_name y department_head dependen de department_id, no de employee_id.

Después (cumple 3NF):

Employees:

employee_idnamedepartment_id
E1BobD1

Departments:

department_iddepartment_namedepartment_head
D1EngineeringCarol

BCNF — Forma Normal de Boyce-Codd

Regla: Para toda dependencia funcional X → Y, X debe ser superclave.

Antes (viola BCNF):

studentcourseprofessor
AliceCS101Prof. Smith
BobCS101Prof. Smith

course → professor, pero course no es superclave.

Después (cumple BCNF):

Enrollments:

studentcourse
AliceCS101
BobCS101

CourseAssignments:

courseprofessor
CS101Prof. Smith

4NF — Sin Dependencias Multivaluadas

Regla: Sin dependencias multivaluadas excepto sobre superclaves.

Antes (viola 4NF):

employeeskilllanguage
AliceJavaEnglish
AliceJavaSpanish
AlicePythonEnglish
AlicePythonSpanish

Skills y languages son hechos multivaluados independientes.

Después (cumple 4NF):

EmployeeSkills:

employeeskill
AliceJava
AlicePython

EmployeeLanguages:

employeelanguage
AliceEnglish
AliceSpanish

5NF — Dependencia de Unión

Regla: Toda dependencia de unión está implicada por las claves candidatas.

Antes (viola 5NF):

agentcompanyproduct
SmithFordTruck
SmithFordCar
SmithToyotaCar
JonesToyotaCar

Después (cumple 5NF):

AgentCompany:

agentcompany
SmithFord
SmithToyota
JonesToyota

AgentProduct:

agentproduct
SmithTruck
SmithCar
JonesCar

CompanyProduct:

companyproduct
FordTruck
FordCar
ToyotaCar

Resumen de Normalización

FormaReglaElimina
1NFValores atómicosGrupos repetidos
2NFDependencia de clave completaDependencias parciales
3NFDependencia solo de claveDependencias transitivas
BCNFDeterminante superclaveAnomalías restantes
4NFSin dependencias multivaluadasValores multi-independientes
5NFDependencias de uniónUniones reconstruibles

Cuándo Detener la Normalización

  • 3NF/BCNF es el punto práctico para la mayoría de sistemas OLTP
  • 4NF importa cuando tienes atributos verdaderamente multivaluados (raro)
  • 5NF es mayormente teórico para aplicaciones productivas
  • Desnormaliza intencionalmente cuando el rendimiento de lectura importa más que la integridad de escritura

Errores Comunes

  • Sobrenormalizar hasta 5NF — añade complejidad con mínimo beneficio práctico
  • Subnormalizar hasta 1NF — lleva a anomalías de actualización e inconsistencia de datos
  • Normalizar antes de entender las queries — el esquema debe servir la carga de trabajo
  • Ignorar BCNF — 3NF no maneja todas las anomalías; BCNF es el estándar más estricto

FAQ

¿Las bases de datos NoSQL necesitan normalización? No de la misma forma. Las bases de datos documentales a menudo embeben datos relacionados (desnormalización) y usan consistencia a nivel de aplicación.

¿Debería siempre apuntar a 3NF? Apunta a BCNF en sistemas transaccionales. Para analítica heavy de lectura, desnormaliza deliberadamente.

¿Cómo afecta la normalización al indexing? Los esquemas normalizados necesitan más joins, que requieren indexing cuidadoso. Los esquemas desnormalizados necesitan menos joins pero más almacenamiento y lógica de actualización.