Saltar al contenido principal

¿Qué es la Segunda Forma Normal (2NF)?

Aprende cómo la segunda forma normal (2NF) puede mejorar el diseño de tu base de datos eliminando las dependencias parciales.
Actualizado 6 ene 2025  · 9 min de lectura

Al trabajar con bases de datos, es habitual encontrarse con problemas como datos redundantes y actualizaciones incoherentes. La segunda forma normal es un paso de normalización de la base de datos que se basa en la primera forma normal (1NF) para crear tablas más limpias y eficientes. 

Comprender la 2NF es fundamental para cualquiera que trabaje en el diseño de bases de datos o en la gestión de datos, y sienta las bases para formas de normalización superiores, como la tercera forma normal (3NF). En este artículo exploraremos cómo funciona 2NF y cómo transformar tablas para que cumplan los requisitos de 2NF, con ejemplos prácticos. También hablaremos de las ventajas e inconvenientes de 2NF, y de los casos de uso a los que mejor se adapta.

Comprender la Segunda Forma Normal

La segunda forma normal es un paso de normalización de la base de datos centrado en eliminar las dependencias parciales. Fue introducido por Edgar F. Codd, pionero de las bases de datos relacionales, como parte de su trabajo sobre la normalización.  

Para que una tabla esté en 2NF, debe cumplir las reglas de la primera forma normal:

  • Atomicidad: Cada celda debe contener un único valor (no se repiten grupos ni matrices).
  • Filas únicas: La tabla debe tener una clave primaria clara.

2NF va un paso más allá con una regla adicional: eliminar las dependencias parciales.

Una dependencia parcial se produce cuando un atributo no primo (columna que no forma parte de ninguna clave candidata) depende sólo de una parte de una clave compuesta en lugar de toda la clave. La regla 2NF garantiza que todos los atributos no primos dependen de toda la clave primaria, no sólo de una parte de ella. Dejar dependencias parciales en una tabla significa que pueden introducirse datos redundantes en la base de datos, lo que provoca ineficacia y posibles incoherencias durante las actualizaciones o eliminaciones.

La teoría por sí sola puede resultar un poco árida, así que veamos un ejemplo práctico.

A continuación Inscripción en el curso de los alumnos de Datacamp.

Identificación del estudiante ID del curso Nombre del curso Nombre del instructor
1001 201 Fundamentos de SQL Ken Smith
1002 202 Introducción a Python Merlin O’Donnell
1001 202 Introducción a Python Merlin O’Donnell

Aquí, la clave primaria es el compuesto de ID de alumno e ID de curso. Sin embargo, los atributos no principales Nombre del curso y Precio del curso sólo dependen del ID del curso, no de la clave completa. Esto viola 2NF.

Pasos para descomponer tablas para conseguir 2NF

Para asegurarte de que una tabla sigue las reglas de 2NF, necesitas

  1. Identifica todas las claves candidatas: Determina los conjuntos mínimos de atributos que identifican unívocamente las filas de la tabla. Estas son tus claves de candidato.
  2. Determina las Dependencias Funcionales: Identifica todas las dependencias funcionales en la tabla. En concreto, busca dependencias en las que los atributos no primos (los que no forman parte de ninguna clave candidata) dependan sólo de una parte de una clave compuesta.
  3. Elimina las Dependencias Parciales: Para cada dependencia parcial:
    • Mueve los atributos dependientes a una nueva tabla junto con la parte de la clave de la que dependen.
    • Asegúrate de que la nueva tabla tiene una clave primaria única.
  4. Repite la operación hasta que no queden dependencias parciales: Confirma que cada atributo no primario de todas las tablas depende totalmente de su respectiva clave primaria.

Ejemplos prácticos de la segunda forma normal

Veamos ahora dos ejemplos.

Ejemplo 1: Tabla de matriculación en cursos

Anteriormente, vimos la siguiente tabla de matriculación en cursos:

Identificación del estudiante ID del curso Nombre del curso Nombre del instructor
1001 201 Fundamentos de SQL Ken Smith
1002 202 Introducción a Python Merlin O’Donnell
1001 202 Introducción a Python Merlin O’Donnell

Sigamos los pasos que hemos indicado en el apartado anterior.

1. Identificar nuestra clave de candidato.

En este caso, la clave candidata es una clave compuesta de ID de alumno e ID de curso. Esta combinación única identifica cada fila de la tabla.

2. Determinar nuestras dependencias funcionales

El Nombre del Curso y el Nombre del Instructor dependen del ID del Curso, no de la clave compuesta completa (ID del Alumno, ID del Curso). Se trata de una dependencia parcial, porque estos atributos sólo dependen de una parte de la clave compuesta.

3. Eliminar las dependencias parciales

Necesitamos mover los atributos que dependen sólo de una parte de la clave (Nombre del curso y Nombre del profesor) a una nueva tabla basada únicamente en ID del curso.

Tras la descomposición, nuestras nuevas tablas tienen este aspecto:

Tabla de matriculación en cursos

Identificación del estudiante ID del curso
1001 201
1002 202
1001 202

Tabla de detalles del curso

ID del curso Nombre del curso Nombre del instructor
201 Fundamentos de SQL Ken Smith
202 Introducción a Python Merlin O’Donnell

Si quieres ponerte manos a la obra y crear tus propias bases de datos, echa un vistazo a nuestro curso PostgresQL. Si eres un poco más avanzado, podrías probar esta Introducción al modelado de datos en Snowflake, que abarca ideas como el modelado entidad-relación y el modelado dimensional.

Ejemplo 2: Tabla de pedidos

Empezaremos con esta tabla de Pedidos. Intenta seguir los pasos que hemos indicado anteriormente y descomponer tú mismo esta mesa. 

Número de pedido ID del producto Fecha del pedido Nombre del producto Nombre del proveedor
1 201 2024-11-01 Portátil TechSupply
1 202 2024-11-01 Ratón TechSupply
2 201 2024-11-02 Portátil TechSupply
3 203 2024-11-03 Teclado KeyMasters

1. Identificar nuestra clave candidata

La combinaciónID de pedido e ID de producto identifica de forma única cada fila, lo que hace que (ID de pedido, ID de producto) sea una clave candidata compuesta. Ninguna columna puede identificar las filas de forma única porque:

  • ID de pedido por sí solo no es único, ya que varios productos pueden formar parte del mismo pedido.
  • El ID del producto por sí solo no es único, ya que el mismo producto puede aparecer en distintos pedidos.

Esto significa que (ID de pedido, ID del producto) es también nuestra clave primaria.

2. Determinar nuestras dependencias funcionales

La Fecha del Pedido depende del ID del Pedido (no de la clave compuesta completa). Se trata de una dependencia parcial.

El Nombre del Producto y el Nombre del Proveedor dependen del ID del Producto (no de la clave compuesta completa). También son dependencias parciales.

3. Eliminar las dependencias parciales

Tenemos que dividir la tabla en tablas más pequeñas, cada una de ellas dirigida a una dependencia lógica. 

En primer lugar, crearemos una tabla para la información del pedido, que contiene información específica de ID del pedido.

Tabla de pedidos

Número de pedido Fecha del pedido
1 2024-11-01
2 2024-11-02
3 2024-11-03

A continuación, creamos una tabla que contiene información específica de ID del producto.

Tabla de pedidos

ID del producto Nombre del producto Nombre del proveedor
201 Portátil TechSupply
202 Ratón TechSupply
203 Teclado KeyMasters

La tabla original se reduce ahora sólo a la clave compuesta y a las relaciones entre pedidos y productos.

Número de pedido ID del producto
1 201
1 202
2 201
3 203

Ahora, nuestra base de datos está en 2NF porque 1) se han eliminado todas las dependencias parciales, y 2) natributos on-prime dependen totalmente de sus respectivas claves primarias.

Cuándo aplicar la segunda forma normal

Entonces, ¿por qué deberías refactorizar tu base de datos a 2NF? ¿Es suficiente por sí solo o deberías dar un paso más y aspirar a 3NF? 

Ventajas y limitaciones de la segunda forma normal

La segunda forma normal ofrece varias ventajas, lo que la convierte en un paso útil en el proceso de normalización de la base de datos:

  • Mayor integridad de los datos: Al eliminar las dependencias parciales, 2NF minimiza las anomalías de inserción, actualización y eliminación, lo que da lugar a una base de datos más fiable.
  • Reducción de la redundancia: 2NF disminuye la repetición de datos, optimizando el uso del almacenamiento y simplificando el mantenimiento de los datos.
  • Estructura de datos mejorada: Sienta las bases para una normalización posterior, como la progresión a la tercera forma normal, al crear un diseño de base de datos más limpio y eficiente.

Pero tiene algunas limitaciones:

  • Mayor complejidad: Descomponer las tablas para que cumplan 2NF puede hacer más complejo el proceso de diseño, sobre todo cuando se trata de claves compuestas y dependencias.
  • Uniones adicionales: Dividir las tablas puede requerir más uniones en las consultas, lo que puede afectar al rendimiento de los sistemas con grandes conjuntos de datos o consultas complejas.
  • Redundancia residual: Aunque 2NF reduce las dependencias parciales, no aborda las dependencias transitivas, dejando cierta redundancia hasta que se aborde en 3NF.

Consideraciones de rendimiento con la segunda forma normal

Descomponer las tablas para eliminar las dependencias parciales puede repercutir directamente en el rendimiento de la base de datos. Por un lado, conseguir 2NF reduce la redundancia de datos y mejora la coherencia, lo que provoca menos anomalías durante las operaciones de inserción, actualización o eliminación. Por otra parte, la normalización puede aumentar el número de tablas, lo que significa que son necesarias uniones adicionales al recuperar datos relacionados. Esto podría afectar al rendimiento de las consultas en grandes conjuntos de datos.

Para asegurarte de que tu base de datos normalizada mantiene su rendimiento, asegúrate de seguir estas buenas prácticas:

  • Indexación: Utiliza índices para acelerar las uniones entre tablas descompuestas.
  • Optimización de consultas: Optimiza las consultas para minimizar el coste de las uniones adicionales.
  • Enfoque híbrido: Combina la normalización con la desnormalización en áreas en las que el rendimiento sea importante, como las tablas de informes.
  • Seguimiento periódico: Evalúa continuamente el rendimiento de tu base de datos con herramientas de perfilado para detectar cualquier posible problema.

¿Es la 2NF sólo un paso transitorio para alcanzar la tercera forma normal?

En la mayoría de los casos, los diseñadores de bases de datos se esfuerzan por conseguir la tercera forma normal debido a su capacidad para reducir aún más la redundancia y mejorar la integridad general de los datos. Sin embargo, conseguir la 3NF suele implicar trabajo adicional, como crear más tablas y relaciones, lo que puede introducir complejidad y compensaciones de rendimiento en la ejecución de las consultas.

Hay casos en los que utilizar la segunda forma normal por sí sola puede ser suficiente. Si la sencillez y la aplicación rápida son prioritarias, como en proyectos a pequeña escala, prototipos o situaciones en las que la redundancia de datos es mínima, 2NF puede ser suficiente. Por ejemplo, en los sistemas en los que todos los atributos ya dependen totalmente de una clave primaria simple, alcanzar 2NF podría cumplir el objetivo principal de reducir la dependencia parcial, sin necesidad de una normalización adicional.

Más allá de la segunda forma normal: hacia la tercera forma normal

Si quieres normalizar aún más tu base de datos, puedes seguir refactorizando tus tablas hasta alcanzar la tercera forma normal.

3NF se basa en 2NF abordando las dependencias transitivas: situaciones en las que los atributos no clave dependen de otros atributos no clave en lugar de la clave primaria. Esta progresión garantiza que cada atributo dependa directamente de la clave primaria y nada más.

Por ejemplo, en una tabla de seguimiento de inscripciones a cursos:

  • 2NF: Garantiza que atributos como el nombre del curso y el nombre del alumno dependan totalmente de sus respectivas claves primarias (por ejemplo, ID del alumno e ID del curso). Esto elimina las dependencias parciales, en las que los atributos que no son clave dependen sólo de una parte de la clave compuesta.
  • 3NF: Garantiza que atributos como los detalles del instructor o la información del departamento se almacenen en tablas separadas, eliminando las dependencias transitivas.

3NF es ideal para sistemas más complejos en los que la integridad de los datos y la eficiencia son primordiales, especialmente a medida que crece el volumen de datos. Consulta nuestro artículo ¿Qué es la tercera forma normal? si quieres saber más sobre la 3NF y su forma más restrictiva, la BCNF.

Conclusión

La segunda forma normal es un paso esencial en la normalización de bases de datos, ya que salva la distancia entre 1NF y formas superiores como 3NF. Al eliminar las dependencias parciales, 2NF reduce la redundancia y mejora la fiabilidad de tus datos. Aunque puede añadir cierta complejidad, las ventajas de la mejora de la integridad de los datos y la simplificación del mantenimiento hacen que sea una parte fundamental de un diseño eficaz de la base de datos.

Si estás preparado para llevar tus habilidades más allá, explora nuestro curso de Diseño de Bases de Datos para profundizar en las técnicas de normalización y sus aplicaciones prácticas. También puedes validar tus conocimientos de SQL y de gestión de bases de datos y demostrar tu experiencia a posibles empleadores con nuestra Certificación de Asociado SQL.

Por último, quiero decirte que si eres una persona con capacidad de decisión en una empresa y sabes que tienes trabajo por hacer para crear bases de datos más limpias y eficientes, considera la posibilidad de asistir a un DataCamp para empresas solicitud de demostración. Podemos ayudarte a transformar las capacidades de tu equipo para que puedas crear sistemas de bases de datos escalables que impulsen la eficacia y la innovación empresarial. Incluso podemos crear rutas de aprendizaje a medida y temas personalizados. 

¿Formar a 2 o más personas? Consulta nuestras Soluciones para empresas

Consigue que tu equipo acceda a toda la biblioteca de DataCamp, con informes centralizados, tareas, proyectos y mucho más

Prueba DataCamp para empresas
business-homepage-hero.png

Marie Fayard's photo
Author
Marie Fayard

Ingeniero superior de software, redactor técnico y asesor con formación en física. Comprometidos a ayudar a las startups en fase inicial a alcanzar su potencial y a hacer que los conceptos complejos sean accesibles a todo el mundo.

Preguntas frecuentes sobre 2NF

¿Puede aplicarse la segunda forma normal (2NF) a bases de datos sin claves compuestas?

Sí. Aunque 2NF suele implicar claves compuestas, las tablas de clave única también pueden seguir los principios de 2NF si todos los atributos no primarios dependen totalmente de la clave primaria.

¿Garantiza la consecución de 2NF la eliminación de toda redundancia en una base de datos?

No. Aunque 2NF elimina las dependencias parciales, no aborda las dependencias transitivas. Para ello, necesitas pasar a la tercera forma normal (3NF).

¿Hay situaciones en las que una base de datos en 1NF sea suficiente sin pasar a 2NF?

Sí. En sistemas muy sencillos con mínima redundancia de datos o en prototipos, puede bastar con 1NF. En general, no recomendaría parar en 1NF a menos que tengas una razón muy específica y justificable.

¿Cuál es la diferencia entre 2NF y tercera forma normal (3NF)?

2NF elimina las dependencias parciales, garantizando que los atributos dependan de toda la clave. 3NF va más allá al eliminar las dependencias transitivas, garantizando que los atributos dependan directamente de la clave primaria y no de otros atributos que no sean claves.

¿Cómo compruebo si mi base de datos existente ya está en 2NF?

Puedes comprobarlo revisando todas las tablas con claves compuestas y verificando que todos los atributos no primos dependen de toda la clave compuesta, no sólo de una parte de ella.

Temas

Aprende con DataCamp

Curso

Database Design

4 hr
82.2K
Learn to design databases in SQL to process, store, and organize data in a more efficient way.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

10 proyectos SQL listos para la cartera para todos los niveles

Selecciona tu primer -o siguiente- proyecto SQL para practicar tus habilidades SQL actuales, desarrollar otras nuevas y crear una cartera profesional sobresaliente.
Elena Kosourova's photo

Elena Kosourova

11 min

Tutorial

Tutorial de ecuación normal para regresión lineal

Aprende qué es la ecuación normal y cómo puedes utilizarla para construir modelos de machine learning.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

Tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

Tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Base de datos Azure SQL: Configuración y gestión paso a paso

Aprende a crear, conectar, gestionar, consultar y proteger tu base de datos Azure SQL. Esta guía paso a paso cubre todo lo esencial para una configuración óptima de la base de datos.
Anneleen Rummens's photo

Anneleen Rummens

12 min

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Ver másVer más