Saltar al contenido principal

¿Qué es la Tercera Forma Normal (3NF)?

Aprende cómo la tercera forma normal (3NF) puede ayudarte a organizar tus bases de datos de forma más eficiente, eliminando la redundancia y minimizando los problemas de dependencia. Comprueba cómo la descomposición de tablas puede simplificar la gestión de datos.
Actualizado 14 feb 2025  · 9 min de lectura

Imagina trabajar con una base de datos masiva y desestructurada, llena de información repetida y redundante. Cada actualización o eliminación se convierte en un desastre potencial, con el riesgo de errores e incoherencias. La tercera forma normal (3NF) es un método probado de normalización de bases de datos para evitar este caos. Implementar 3NF limpia tu estructura de datos, garantizando que sea eficiente, organizada y libre de redundancias innecesarias.

En este artículo exploraremos cómo funciona la 3NF, por qué es valiosa y cómo puedes ponerla en práctica. También compararemos 3NF con otras formas y aprenderemos cuándo utilizar cada una. Todo el mundo puede beneficiarse de aprender más sobre estas estructuras, pero este conocimiento es especialmente valioso si eres diseñador de bases de datos o científico de datos, ya que puede simplificar significativamente tu trabajo y mantener la fiabilidad de tus bases de datos. Si te interesa el diseño de bases de datos en su conjunto, echa un vistazo a nuestro curso completo de Diseño de Bases de Datos.

Tercera forma normal (3NF) Definición

La tercera forma normal es un concepto clave de la normalización de bases de datos que elimina las dependencias no deseadas. 3NF se basa en la primera forma normal (1NF) y la segunda forma normal (2NF), lo que significa que hereda sus reglas: 1NF requiere valores atómicos (indivisibles) en cada celda, y 2NF elimina las dependencias parciales de una clave primaria compuesta. 3NF va más allá al eliminar las dependencias transitivas, una situación en la que los atributos no clave dependen indirectamente de la clave primaria.

Al centrarse en esto, 3NF garantiza que cada columna no clave de una tabla esté directamente vinculada a la clave primaria y nada más. En términos más prácticos, 3NF ayuda a minimizar la redundancia y a evitar anomalías al insertar, actualizar o borrar datos.

En los años 70, Edgar F. Codd introdujo 3NF para formalizar las condiciones para conseguir una estructura de base de datos totalmente normalizada. Una reformulación de Carlo Zaniolo unos años más tarde proporcionó una explicación más clara de la diferencia entre la 3NF "clásica" y la forma normal de Boyce-Codd (BCNF), más restrictiva. No te preocupes demasiado por BCNF por ahora, volveremos a ello más adelante.

Comprender las condiciones de la tercera forma normal

Entonces, ¿qué se necesita exactamente para alcanzar 3NF? Para que una mesa cumpla los requisitos, tiene que cumplir algunas condiciones:

  • Estar en 2NF: Esto significa que ya es atómica, sin grupos repetidos ni dependencias parciales de ninguna clave compuesta.

Requisitos 1NF, 2NF y 3NF

3NF incluye 2NF y 1NF. Imagen del autor

  • No hay dependencias transitivas: Esta regla es clave. En una tabla 3NF, cualquier columna que no sea clave primaria debe depender únicamente de la clave primaria, no indirectamente a través de otra columna que no sea clave.

Veamos lo que eso significa en la práctica.

Descomponer tablas para conseguir 3NF

Recorramos el proceso de descomposición de tablas para llegar a 3NF. Utilizaremos algunos datos de muestra de los cursos DataCamp para ilustrar cada paso.

Paso 1: Identificar las dependencias transitivas

Para empezar, buscaremos cualquier atributo de una tabla que dependa indirectamente de la clave primaria. Como regla general, si algún atributo depende de algo distinto de la clave primaria, esto indica unadependencia transitiva . Eso es señal de que puede haber llegado el momento de separar tu mesa.

Echa un vistazo a las tres tablas siguientes. ¿Cuál tiene una dependencia transitiva?

Tabla 1: Curso

ID del curso Nombre del curso Dificultad
201 Fundamentos de SQL Principiante
202 Introducción a Python Principiante
203 Comprender la Ciencia de Datos Intermedio

Tabla 2: Instructor

ID Instructor Nombre del instructor Experiencia
1 Sarah Johnson Ciencia de datos
2 Tom Williams Aprendizaje automático
3 Emily Brown Python

Tabla 3: Inscripciones

ID de inscripción Nombre del alumno ID del curso Nombre del curso
1001 Alice Smith 201 Fundamentos de SQL
1002 Bob Green 202 Introducción a Python
1003 Charlie Azul 201 Fundamentos de SQL

La respuesta es... Tabla 3¡!

En esta tabla, el Nombre del curso depende del IDdel curso, pero no directamente del ID de inscripción (la clave primaria). Esta dependencia indirecta hace que Nombre del curso sea una dependencia transitiva.

Paso 2: Separar los datos en nuevas tablas

Para abordar la dependencia transitiva, dividiremos la Tabla 1 en dos tablas. Cada tabla se centrará en los datos directamente dependientes.

Tabla de inscripciones revisada

ID de inscripción Nombre del alumno ID del curso
1001 Alice Smith 201
1002 Bob Green 202
1003 Charlie Azul 201

Tabla de cursos

ID del curso Nombre del curso
201 Fundamentos de SQL
202 Introducción a Python

Ahora, cada tabla sólo contiene información que depende directamente de su clave primaria: ID del curso es ahora la clave primaria de Nombre del curso en el campo Cursos y el ID de inscripción es la clave principal en la tabla Inscripciones en la tabla Matrículas.

Con esta descomposición, las tablas cumplen ahora los requisitos 3NF, eliminando la redundancia y garantizando que cada tabla almacene sólo la información directamente relevante.

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

Ventajas y limitaciones del uso de la tercera forma normal

Entonces, ¿por qué tanto esfuerzo para llegar a 3NF? Éstas son las principales ventajas:

  • Integridad de datos mejorada: Al eliminar las dependencias transitivas, 3NF ayuda a garantizar que las actualizaciones y eliminaciones no provoquen datos contradictorios u obsoletos en las tablas.
  • Redundancia reducida: Menos redundancia significa que tu base de datos es más fácil de mantener, y se reduce el uso de almacenamiento.
  • Mantenimiento de datos más sencillo: Mantener información similar en tablas específicas facilita la actualización de los registros sin rastrear entradas redundantes.

Dicho esto, aunque las estructuras 3NF favorecen la precisión de los datos, también pueden dar lugar a datos más segmentados, lo que a veces hace que las consultas complejas sean más lentas debido a las uniones de tablas adicionales. En los casos en los que la necesidad de velocidad triunfa sobre la necesidad de normalización, BCNF o 4NF pueden ser opciones más prácticas.

Comparación: Formas normales primera, segunda, tercera y BC

Veamos las diferencias de forma.

Tabla comparativa: primera, segunda y tercera formas normales

Aquí tienes una tabla comparativa que te ayudará a comprender los requisitos de 1NF, 2NF y 3NF.

Función 1NF 2NF 3NF
Datos atómicos
Sin dependencias parciales
Sin dependencias transitivas

Tercera forma normal vs. Forma normal de Boyce-Codd (BCNF)

BCNF es una forma "más estricta" de 3NF que elimina aún más las anomalías que surgen con el solapamiento de claves candidatas. Puede ser especialmente útil en casos complejos en los que la 3NF por sí sola no elimina totalmente las dependencias. BCNF se aplica cuando un atributo no primo depende de un atributo que forma parte de una clave candidata compuesta. Sé que suena complejo, así que vamos a desglosarlo con un ejemplo.

Estructura actual (en 3NF)

Tras la descomposición para conseguir 3NF, teníamos estas dos tablas:

Tabla de inscripciones

ID de inscripción Nombre del alumno ID del curso
1001 Alice Smith 201
1002 Bob Green 202
1003 Charlie Azul 201

Tabla de cursos

ID del curso Nombre del curso
201 Fundamentos de SQL
202 Introducción a Python

En esta estructura, cada tabla está en 3NF sin dependencias transitivas, y los datos están debidamente normalizados.

Introducir un nuevo requisito

Ahora, vamos a añadir un nuevo atributo a Cursos: el Aula en la que se imparte cada curso. Este nuevo atributo podría dar lugar a un escenario que requiera BCNF.

Tabla de cursos actualizada (3NF)

ID del curso Nombre del curso Aula
201 Fundamentos de SQL Sala 101
202 Introducción a Python Sala 102
203 Comprender la Ciencia de Datos Sala 101

Aquí, el ID del curso sigue siendo la clave primaria, y todos los demás atributos dependen directamente de él. Pero supongamos que hay una nueva norma según la cual cada aula sólo puede albergar una asignatura a la vez. Supongamos también que elnombre del curso "Fundamentos de SQL" pudiera ofrecerse con diferentes ID de curso (como 201, 204, etc.), si estuvieran programados a horas diferentes. En ese caso, cada oferta de "Fundamentos de SQL" seguiría teniendo lugar en la "Sala 101", independientemente delID específico delcurso . Como resultado, Nombre del curso también determina de forma única Aula.

Esto significa que ahora tenemos dos claves candidatas:

  1. ID del curso
  2. Nombre del curso

Con ambas claves candidatas, ahora tenemos un problema que 3NF no aborda: Aula depende de Nombre del curso en lugar de sólo ID del curso.

Aplicación de la BCNF

Para eliminar este problema de dependencia, tendremos que descomponer aún más la función Cursos en dos tablas separadas que se ajusten mejor a BCNF:

  1. Un nuevo Cursos que sólo incluye el ID del curso y Nombre del curso.
  2. A DetallesDelCurso que almacena el Nombre del curso y Aula asociación.

Esto es lo que parece:

Tabla de cursos revisada (BCNF)

Tabla Detalles del curso (BCNF)

Nombre del curso Aula
Fundamentos de SQL Sala 101
Introducción a Python Sala 102
Comprender la Ciencia de Datos Sala 101

Con esta nueva estructura, cada tabla satisface las condiciones BCNF:

  • En los Cursos tabla, ID del curso es la clave primaria, y todos los atributos dependen únicamente de ella.
  • En la sección DetallesDelCurso tabla Nombre del curso es la clave primaria, y Aula sólo depende de Nombre del curso.

Esta configuración elimina cualquier problema de dependencia causado por el solapamiento de claves candidatas, garantizando una estructura estrictamente normalizada.

Conclusión

La tercera forma normal es una herramienta valiosa para los diseñadores de bases de datos que pretenden mantener los datos limpios, coherentes y libres de dependencias problemáticas. Con 3NF, se mejora la integridad de los datos, lo que facilita la gestión y reduce la redundancia. Recuerda que, aunque 3NF funciona bien en la mayoría de las situaciones, las bases de datos más complejas podrían beneficiarse de formas adicionales como BCNF o 4NF.

Si este artículo te ha resultado útil, considera la posibilidad de dar el siguiente paso obteniendo nuestra Certificación SQL Associate. Es una forma estupenda de validar tus conocimientos de SQL y de gestión de bases de datos y de demostrar tu experiencia a posibles empleadores.


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 la tercera forma normal

¿Puede aplicarse 3NF a todos los tipos de bases de datos?

Aunque la 3NF es eficaz en las bases de datos relacionales, puede que no siempre sea necesaria para las bases de datos NoSQL, que a menudo dan prioridad a la flexibilidad y la escalabilidad frente a la normalización estricta. En algunos casos, puede ser preferible un esquema desnormalizado por razones de rendimiento, especialmente cuando se consultan grandes cantidades de datos rápidamente.

¿Cuáles son los inconvenientes de seguir estrictamente la 3NF?

El cumplimiento estricto de la 3NF a veces puede dar lugar a esquemas complejos con muchas tablas, que pueden requerir múltiples uniones en las consultas. Esto puede afectar negativamente al rendimiento, sobre todo en grandes bases de datos o sistemas con grandes volúmenes de transacciones. En estos casos, pueden resultar más prácticos otros enfoques, como la desnormalización o el uso de la BCNF.

¿Se puede aplicar 3NF a bases de datos ya existentes, o tengo que rediseñarlas?

Definitivamente, 3NF puede aplicarse a las bases de datos existentes, aunque puede requerir una reestructuración importante. Este proceso, llamado refactorización de la base de datos, consiste en descomponer las tablas para eliminar redundancias y dependencias. Según el tamaño y la complejidad de la base de datos, esto puede implicar cierta planificación y pruebas para garantizar que se mantienen la integridad de los datos y el rendimiento del sistema.

¿Qué herramientas o técnicas pueden ayudar a automatizar el proceso de alcanzar la 3NF?

Existen varias herramientas de diseño de bases de datos, como MySQL Workbench, Oracle SQL Developer y ER/Studio, que ayudan a visualizar el esquema de la base de datos y a identificar problemas de normalización. Algunas de estas herramientas pueden sugerir o automatizar pasos para conseguir 3NF, aunque la supervisión humana sigue siendo importante para garantizar la integridad y coherencia de los datos.

¿Cuál es la diferencia entre una clave candidata y una clave primaria?

Una clave candidata es un conjunto mínimo de atributos que pueden identificar unívocamente cada fila de una tabla. Puede haber varias claves candidatas en una tabla. Una clave primaria, por otra parte, es la clave candidata específica elegida por el diseñador de la base de datos para identificar de forma única las filas. Sólo se permite una clave primaria por tabla, y no puede tener valores NULL.

¿Por qué necesitamos la forma normal de Boyce-Codd (BCNF) si una tabla ya está en tercera forma normal (3NF)?

BCNF es más estricto que 3NF y aborda los casos en los que existen dependencias en las claves candidatas. Aunque 3NF elimina las dependencias transitivas, aún puede permitir la redundancia si una dependencia funcional tiene un determinante que no es una superclave. BCNF elimina esto asegurándose de que todas las dependencias funcionales tengan una superclave en el lado izquierdo.

¿Puede una tabla tener más de una clave candidata?

Sí, una tabla puede tener varias claves candidatas. Cada clave candidata es un conjunto único y mínimo de atributos que pueden identificar filas.

Temas

Aprende con DataCamp

Certificación disponible

curso

Comprender la ingeniería de datos

2 hr
263.9K
Descubre cómo los ingenieros de datos sientan las bases que hacen posible la ciencia de datos. ¡Sin codificación!
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow