Table of Contents
Tercera Forma Normal (3FN) en Bases de Datos MySQL: explicación y ejemplos prácticos
Cuando diseñamos una base de datos relacional en MySQL, es fundamental aplicar el proceso de normalización para evitar redundancias y garantizar la coherencia de los datos.
Dentro de este proceso, una de las etapas más importantes es alcanzar la Tercera Forma Normal (3FN).
En este artículo te explicaré qué es la 3FN, cuándo se aplica, sus ventajas y te mostraré ejemplos prácticos en MySQL para que la entiendas fácilmente.
¿Qué es la Tercera Forma Normal (3FN)?
La Tercera Forma Normal (3FN) es una etapa del proceso de normalización que tiene como objetivo eliminar dependencias transitivas dentro de una tabla.
En palabras más sencillas:
Una tabla está en Tercera Forma Normal si ya cumple con la Segunda Forma Normal (2FN) y ninguna columna que no sea clave depende de otra columna que tampoco sea clave.
Requisitos para cumplir la 3FN
Para que una tabla esté en 3FN, debe cumplir con:
- Primera Forma Normal (1FN):
No hay columnas repetidas y cada campo contiene un solo valor (datos atómicos). - Segunda Forma Normal (2FN):
Todos los atributos dependen completamente de la clave primaria (no hay dependencias parciales). - Tercera Forma Normal (3FN):
No existen dependencias transitivas, es decir, ningún campo no clave depende de otro campo no clave.
Ejemplo práctico paso a paso
Imaginemos que tenemos una tabla llamada empleados
en MySQL con la siguiente estructura:
CREATE TABLE empleados (
id_empleado INT PRIMARY KEY,
nombre VARCHAR(50),
id_departamento INT,
nombre_departamento VARCHAR(50),
ciudad_departamento VARCHAR(50)
);
Problema
En esta tabla, los campos nombre_departamento
y ciudad_departamento
dependen del campo id_departamento
, y no directamente de id_empleado
.
Esto genera una dependencia transitiva:
id_empleado → id_departamento → nombre_departamento, ciudad_departamento
Si modificamos el nombre o ciudad de un departamento, tendríamos que actualizarlo en todos los empleados que pertenezcan a él.
Esto viola la 3FN y genera redundancia de datos.
Cómo llevar la tabla a Tercera Forma Normal
Para cumplir con la 3FN, debemos separar las dependencias transitivas en tablas distintas.
Paso 1: Crear la tabla departamentos
CREATE TABLE departamentos (
id_departamento INT PRIMARY KEY,
nombre_departamento VARCHAR(50),
ciudad_departamento VARCHAR(50)
);
Paso 2: Modificar la tabla empleados
CREATE TABLE empleados (
id_empleado INT PRIMARY KEY,
nombre VARCHAR(50),
id_departamento INT,
FOREIGN KEY (id_departamento) REFERENCES departamentos(id_departamento)
);
Paso 3: Insertar algunos datos de ejemplo
INSERT INTO departamentos (id_departamento, nombre_departamento, ciudad_departamento)
VALUES
(1, 'Recursos Humanos', 'Madrid'),
(2, 'Contabilidad', 'Barcelona'),
(3, 'IT', 'Valencia');
INSERT INTO empleados (id_empleado, nombre, id_departamento)
VALUES
(101, 'Laura Gómez', 1),
(102, 'Carlos Pérez', 2),
(103, 'Ana Torres', 3);
Resultado
Ahora tenemos:
- La tabla
empleados
contiene solo datos del empleado y su referencia al departamento. - La tabla
departamentos
almacena la información de cada departamento sin duplicarse.
Si queremos consultar los datos de los empleados junto con su departamento, usamos una JOIN:
SELECT e.nombre, d.nombre_departamento, d.ciudad_departamento
FROM empleados e
JOIN departamentos d
ON e.id_departamento = d.id_departamento;
Ventajas de aplicar la Tercera Forma Normal
Evita redundancia de datos: la información del departamento solo se guarda una vez.
Facilita las actualizaciones: si cambia el nombre del departamento, solo se actualiza en una tabla.
Aumenta la integridad de los datos: se eliminan inconsistencias y dependencias innecesarias.
Mejora la eficiencia de las consultas: las relaciones están bien estructuradas y las búsquedas son más precisas.
Desventajas o limitaciones
Aunque la 3FN mejora la consistencia, a veces puede aumentar la complejidad de las consultas, ya que hay que unir varias tablas (JOINs).
Por eso, en proyectos muy grandes o con alta carga de lectura, se puede optar por una desnormalización parcial para optimizar el rendimiento.
La Tercera Forma Normal (3FN) es clave para tener una base de datos bien estructurada, eficiente y coherente en MySQL.
Aplica esta forma normal cuando diseñes tus tablas para evitar problemas de redundancia y mantener la integridad de tus datos a largo plazo.
En resumen:
Una tabla está en 3FN cuando cada campo depende únicamente de la clave primaria y no de otros campos no clave.
Te puede interesar:
- Primera forma normal en bases de datos (1FN): Concepto y ejemplo práctico
- Segunda Forma Normal (2FN) en bases de datos: explicación y ejemplos
Guía Completa de las Formas Normales en Bases de Datos MySQL
Seguir leyendo: