HDP115

Desnormalización de Base de Datos

La desnormalización es el proceso intencional de introducir redundancia en una base de datos para mejorar el rendimiento.

CE

Cristian Escalante

Última actualización: 11 de mayo de 2025

sql
programación
desarrollo

Desnormalización de Base de Datos

La desnormalización es el proceso intencional de introducir redundancia en una base de datos para mejorar el rendimiento. A diferencia de la normalización (que busca eliminar duplicación de datos), la desnormalización sacrifica un poco de eficiencia en el almacenamiento para ganar velocidad en las consultas.

¿Por qué desnormalizar?

  • Consultas más rápidas: Al tener datos redundantes, las consultas pueden ser más rápidas porque requieren menos uniones (joins) entre tablas.
  • Simplicidad: En algunos casos, una estructura de datos desnormalizada puede ser más fácil de entender y trabajar, especialmente en sistemas donde la velocidad es crítica.
  • Mejor rendimiento en lecturas: En aplicaciones donde las lecturas son mucho más frecuentes que las escrituras, la desnormalización puede ser beneficiosa.
  • Optimización de consultas: Algunas consultas complejas pueden ser optimizadas al tener datos relacionados en una sola tabla, evitando múltiples uniones.

::Alert

title: Nota variant: info description: Desnormalizar no es una excusa para diseñar base de datos desorganizadas. Se recomienda usar después de normalizar y evaluar el rendimiento.

::

Ejemplo de desnormalización

Base de datos normalizada (Tienda Online):

-- Tabla "Clientes"
CREATE TABLE clientes (
    id INT PRIMARY KEY,
    nombre VARCHAR(100),
    email VARCHAR(100)
);

-- Tabla "Pedidos"
CREATE TABLE pedidos (
    id INT PRIMARY KEY,
    cliente_id INT,
    fecha DATE,
    FOREIGN KEY (cliente_id) REFERENCES Clientes(id)
);

Para ver el nombre del cliente en un pedido, tendríamos que hacer una unión entre las tablas clientes y pedidos:

SELECT p.id, c.nombre AS nombre_cliente, p.fecha
FROM pedidos p
JOIN clientes c ON p.cliente_id = c.id;

La base de datos desnormalizada (Tienda Online Desnormalizada):

CREATE TABLE pedidos (
    id INT PRIMARY KEY,
    cliente_id INT,
    nombre_cliente VARCHAR(100), -- ¡Dato duplicado!
    fecha DATE
);
Comandos DML en SQL
Aprende sobre los comandos de Data Manipulation Language (DM...
Transacciones en SQL
Aprende qué son las transacciones en SQL, cómo funcionan y c...

Conceptos Básicos de HTML

Aprende los conceptos básicos de HTML

Conceptos Básicos de CSS

Aprende los conceptos básicos de CSS

Conceptos Básicos de JavaScript

Aprende los conceptos básicos de JavaScript

Conceptos Básicos de GIT

Aprende los conceptos básicos de GIT

Conceptos Básicos de Python

Aprende los conceptos básicos de Python

Conceptos Básicos de UML

Aprende los conceptos básicos de UML

Refuerzo Academico de Herramientas de Productividad 2025