Saltar al contenido

Normalización de base de datos: 1FN, 2FN y 3FN con ejemplo

Aprende normalización de base de datos con claves, dependencias y un ejemplo de inscripciones. Distingue 1FN, 2FN, 3FN y Boyce-Codd.

Autoría
Study Mais
Publicado el
Tiempo de lectura
8 min de lectura
Estudiante revisa una computadora y tarjetas de organización de datos sobre una mesa.
Escena ilustrativa de estudio, generada con IA. Study Mais — imagen generada con IA.

En pocas palabras

  • La normalización se apoya en reglas del dominio y dependencias funcionales.
  • La clave primaria elegida no reemplaza el análisis de todas las claves candidatas.
  • Una separación debe considerar unión sin pérdida y preservación de dependencias.

La normalización de base de datos organiza relaciones a partir de sus atributos, claves y dependencias para reducir redundancias problemáticas y evitar anomalías de inserción, actualización y eliminación. En un diseño relacional, no consiste simplemente en dividir una tabla grande: cada separación debe conservar la información y responder a las reglas reales del dominio.

Para entenderla, conviene trabajar con un ejemplo que obligue a decidir qué identifica cada registro. En este artículo se usa un caso didáctico de inscripciones universitarias. A partir de él se distinguen la primera, segunda y tercera forma normal, se explica la diferencia con Boyce-Codd y se revisan las condiciones que una descomposición debe cumplir.

Antes de normalizar: atributos, claves y dependencias

Una dependencia funcional X → Y indica que, en todos los estados válidos de la relación, un mismo valor de X determina un único valor de Y. No se descubre únicamente porque una muestra pequeña no contenga contradicciones. Es una regla del dominio que debe confirmarse con quienes conocen el proceso. Los datos existentes pueden refutar una propuesta, pero su coincidencia accidental no la demuestra.

Supongamos una relación ficticia Inscripción con matrícula, nombre del estudiante, código de curso, nombre del curso, identificador de docente, nombre del docente y calificación. Para este ejercicio, cada estudiante aparece una sola vez por curso y cada curso tiene un docente asignado. La clave candidata es el par matrícula y código de curso. Si existen periodos, grupos o recursamientos, el modelo necesitaría otros atributos.

Qué anomalías queremos evitar

Si el nombre de un curso se repite en cada inscripción, corregirlo exige modificar varias filas. Cuando algunas quedan sin actualizar, aparecen versiones incompatibles del mismo dato. También podría ser imposible registrar un curso que todavía no tiene inscripciones, o perder su información al eliminar al último estudiante inscrito. Estos son problemas de representación, no errores que una consulta SELECT pueda resolver por sí sola.

Tres anomalías en una tabla de inscripciones ficticia
AnomalíaQué ocurrePregunta para revisar el diseño
ActualizaciónEl nombre de un curso debe corregirse en múltiples inscripciones.¿Por qué un dato del curso depende de cada estudiante?
InserciónNo hay dónde registrar un curso sin estudiantes inscritos.¿La existencia del curso se confundió con la inscripción?
EliminaciónAl borrar la última inscripción se pierde la información del curso.¿Se borraron dos hechos diferentes con una sola operación?
Anomalía
Actualización
Qué ocurre
El nombre de un curso debe corregirse en múltiples inscripciones.
Pregunta para revisar el diseño
¿Por qué un dato del curso depende de cada estudiante?
Anomalía
Inserción
Qué ocurre
No hay dónde registrar un curso sin estudiantes inscritos.
Pregunta para revisar el diseño
¿La existencia del curso se confundió con la inscripción?
Anomalía
Eliminación
Qué ocurre
Al borrar la última inscripción se pierde la información del curso.
Pregunta para revisar el diseño
¿Se borraron dos hechos diferentes con una sola operación?
Tres anomalías en una tabla de inscripciones ficticia

Un identificador artificial no elimina estas anomalías. Agregar id_inscripción puede facilitar referencias técnicas, pero los nombres del curso y del docente seguirán repitiéndose si no se revisan las dependencias. La normalización exige analizar qué representa cada atributo. Las restricciones de unicidad y las claves foráneas complementan ese análisis al hacer explícitas ciertas reglas dentro del gestor.

Primera forma normal: una relación bien definida

En la presentación introductoria de la primera forma normal, cada atributo contiene un valor de su dominio y se evitan grupos repetidos como curso1, curso2 y curso3. Guardar varios códigos separados por comas en una celda dificulta reconocer cada inscripción y establecer restricciones. En el modelo propuesto, cada fila representa la participación de un estudiante en un curso.

La atomicidad debe interpretarse respecto del dominio y del uso previsto. No significa que cualquier texto deba dividirse en caracteres ni que todo dato compuesto sea incorrecto. Separar un domicilio puede ser útil para ciertas consultas, pero esa decisión necesita requisitos. El objetivo es una representación consistente de los hechos que la aplicación pretende consultar y mantener.

Segunda forma normal: evitar dependencias parciales

Una relación está en segunda forma normal si está en primera y ningún atributo no primo depende funcionalmente de una parte propia de alguna clave candidata. En el ejemplo, el nombre del estudiante depende de matrícula, y el nombre del curso depende de código de curso. Ambos dependen de una parte de la clave compuesta, mientras la calificación corresponde a la inscripción completa.

Este ejemplo no autoriza a eliminar cualquier repetición. Que la matrícula figure en muchas inscripciones es necesario para relacionarlas con un estudiante. La redundancia problemática está en repetir hechos que deberían mantenerse de manera independiente. Tampoco basta afirmar que una clave primaria de una columna garantiza automáticamente todo el diseño: deben considerarse las demás claves candidatas y las dependencias del dominio.

Tarjetas de papel organizadas sobre una mesa junto a una computadora.
Escena ilustrativa de estudio, generada con IA. Study Mais — imagen generada con IA.

Tercera forma normal y dependencia transitiva

En Curso todavía aparece una dependencia que merece atención: código de curso determina identificador de docente, y este determina nombre del docente. El nombre puede repetirse si una misma persona imparte varios cursos. Una nueva separación crea Docente con su identificador y su nombre, mientras Curso conserva la referencia al docente correspondiente.

La definición formal de tercera forma normal exige que, para cada dependencia funcional no trivial X → A, X sea una superclave o A sea un atributo primo. La explicación habitual sobre eliminar dependencias transitivas de atributos no clave es útil para empezar, pero no sustituye esta condición cuando existen varias claves candidatas que se superponen. Una superclave identifica filas, aunque pueda contener atributos sobrantes.

Resultado del ejemplo bajo sus reglas didácticas
RelaciónAtributos principalesHecho representado
Estudiantematrícula, nombre_estudianteIdentidad y nombre de un estudiante.
Docenteid_docente, nombre_docenteIdentidad y nombre de un docente.
Cursocódigo_curso, nombre_curso, id_docenteCurso y su docente asignado.
Inscripciónmatrícula, código_curso, calificaciónParticipación y resultado de un estudiante en un curso.
Relación
Estudiante
Atributos principales
matrícula, nombre_estudiante
Hecho representado
Identidad y nombre de un estudiante.
Relación
Docente
Atributos principales
id_docente, nombre_docente
Hecho representado
Identidad y nombre de un docente.
Relación
Curso
Atributos principales
código_curso, nombre_curso, id_docente
Hecho representado
Curso y su docente asignado.
Relación
Inscripción
Atributos principales
matrícula, código_curso, calificación
Hecho representado
Participación y resultado de un estudiante en un curso.
Resultado del ejemplo bajo sus reglas didácticas

Las claves foráneas de Inscripción apuntan a Estudiante y Curso; la de Curso apunta a Docente. Así, las consultas recuperan nombres mediante uniones. La documentación de PostgreSQL distingue las restricciones de clave primaria, unicidad y referencia. Su existencia no demuestra por sí misma que la base esté normalizada, pero ayuda a mantener la integridad del esquema elegido.

Boyce-Codd y descomposiciones correctas

La forma normal de Boyce-Codd, BCNF, exige que todo determinante de una dependencia funcional no trivial sea una superclave. Es más estricta que tercera forma normal porque no admite su excepción para atributos primos. No es otro nombre de cuarta forma normal. Su estudio permite reconocer casos con claves candidatas superpuestas que una explicación demasiado informal de 3FN podría pasar por alto.

Una descomposición sin pérdida permite reconstruir las relaciones válidas originales mediante la unión correspondiente, sin inventar combinaciones. La preservación de dependencias permite verificar las reglas originales a partir de las relaciones resultantes, sin necesitar ciertas uniones. Son propiedades diferentes. Dividir hasta alcanzar una forma normal no autoriza a ignorar qué información y restricciones pueden recuperarse después.

Cómo revisar un ejercicio y justificar sus decisiones

Una secuencia de trabajo verificable

  1. Definir qué hecho representa cada fila y cuáles son las reglas del dominio.
  2. Enumerar dependencias funcionales y todas las claves candidatas relevantes.
  3. Comprobar 1FN, dependencias parciales y la condición formal de 3FN.
  4. Proponer separaciones y revisar unión sin pérdida y preservación de dependencias.
  5. Añadir restricciones, probar inserciones y eliminaciones y documentar las reglas adoptadas.

Puede representarse esta secuencia en un diagrama de flujo para distinguir decisiones y comprobaciones. Después conviene ejecutar casos válidos e inválidos, no solo consultas de lectura. Si el diseño falla al registrar un curso sin estudiantes, el ejemplo revela una dependencia que no se había separado. Un pequeño conjunto de pruebas es más explicativo que un esquema con muchas tablas sin justificación.

El diseño lógico y el rendimiento físico son niveles relacionados. Un sistema operativo y el gestor participan en la ejecución, pero índices, memoria y planes de consulta necesitan medición propia. Desnormalizar puede ser una decisión deliberada para una carga concreta, acompañada de reglas para sincronizar las copias. No equivale a abandonar el modelo ni a prometer que menos uniones siempre será más rápido.

Preguntas frecuentes

¿Normalizar significa eliminar todos los datos repetidos?

No. Las referencias entre relaciones repiten identificadores de manera intencional. La meta es organizar hechos y dependencias para evitar redundancias que generan anomalías. Dos filas con valores iguales en una columna no bastan para concluir que exista un problema de normalización.

¿Agregar una clave artificial resuelve la normalización?

No. Un identificador artificial puede ser útil, pero no elimina las dependencias entre los otros atributos ni las claves candidatas del dominio. Es necesario analizar esas relaciones y decidir dónde debe almacenarse cada hecho para mantenerlo de forma consistente.

¿Una base en tercera forma normal siempre es más rápida?

La forma normal describe propiedades del diseño, no una garantía universal de velocidad. El rendimiento depende de consultas, índices, cantidad de datos, concurrencia y otros factores. Primero se busca un modelo correcto; después se miden las operaciones representativas antes de introducir optimizaciones y duplicaciones controladas.

Video para profundizar

Clase sobre normalización de bases de datos con un ejemplo y aplicación en MySQL. Contrasta las formas normales con las dependencias funcionales y las anomalías que se quieren evitar. Normalización de base de datos (Códigos de Programación - MR)

Referencias

  1. WATT, Adrienne. Database Design, 2nd Edition. Chapter 11: Functional Dependencies. https://opentextbc.ca/dbdesign01/chapter/chapter-11-functional-dependencies/
  2. WATT, Adrienne. Database Design, 2nd Edition. Chapter 12: Normalization. https://opentextbc.ca/dbdesign01/chapter/chapter-12-normalization/
  3. PostgreSQL Global Development Group. Documentation: Constraints. https://www.postgresql.org/docs/current/ddl-constraints.html
  4. Microsoft Learn. Description of the database normalization basics. https://learn.microsoft.com/en-us/previous-versions/troubleshoot/microsoft-365/microsoft-365-apps/access/database-normalization-description

Autoría

Study Mais

Estudiante organiza figuras de papel para planear un proceso en su escritorio.
Tecnología

Diagrama de flujo: símbolos y ejemplo paso a paso

Un diagrama de flujo representa los pasos de un proceso y las decisiones que cambian su recorrido. Las figuras indican el tipo de acción; las flechas muestran el orden. Para que sea útil, debe poder seguirse con datos concretos y llegar al resultado esperado.

4 min de lecturaEspañol