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.
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.
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.

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
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
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
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.
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.
Veamos las diferencias de forma.
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 | ❌ | ❌ | ✅ |
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
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)
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:
- ID del curso
- 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:
- Un nuevo Cursos que sólo incluye el ID del curso y Nombre del curso.
- 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)
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.
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:
3NF incluye 2NF y 1NF. Imagen del autor
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
Tabla 2: Instructor
Tabla 3: Inscripciones
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
Tabla de cursos
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:
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.
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
Tabla de cursos
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)
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:
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:
Esto es lo que parece:
Tabla de cursos revisada (BCNF)
Tabla Detalles del curso (BCNF)
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.