Ejercicio Práctico: Normalización de Datos desde Cero (1FN → 3FN)
A continuación te muestro un ejemplo realista de cómo se normaliza una tabla desordenada y con redundancias
para transformarla en un modelo de datos limpio, estructurado y listo para análisis.
1. Tabla original (sin normalizar)
| VentaID | Fecha | Cliente | DirecciónCliente |
ProductosComprados | Cantidades | PrecioTotal |
| 1 | 2024-01-10 | Ana García | Av. Lima 245 |
Laptop, Mouse | 1, 2 | 2500 |
| 2 | 2024-01-11 | Carlos Ruiz | Calle 9 #123 |
Teclado | 1 | 300 |
| 3 | 2024-01-10 | Ana García | Av. Lima 245 |
Laptop | 1 | 2000 |
Problemas detectados
- Productos y cantidades están en listas → violación de 1FN.
- Cliente y dirección se repiten.
- No existe relación clara entre venta → producto.
- PrecioTotal depende de múltiples productos.
2. Primera Forma Normal (1FN): Datos Atómicos
| VentaID | Fecha | Cliente |
DirecciónCliente | Producto | Cantidad |
| 1 | 2024-01-10 | Ana García | Av. Lima 245 | Laptop | 1 |
| 1 | 2024-01-10 | Ana García | Av. Lima 245 | Mouse | 2 |
| 2 | 2024-01-11 | Carlos Ruiz | Calle 9 #123 | Teclado | 1 |
| 3 | 2024-01-10 | Ana García | Av. Lima 245 | Laptop | 1 |
Problemas restantes
- El cliente sigue repitiéndose.
- Los productos duplican filas.
- PrecioTotal ya no aplica.
- Persisten dependencias parciales.
3. Segunda Forma Normal (2FN): Eliminar dependencias parciales
Tabla Ventas
| VentaID | Fecha | ClienteID |
| 1 | 2024-01-10 | 1 |
| 2 | 2024-01-11 | 2 |
| 3 | 2024-01-10 | 1 |
Tabla Clientes
| ClienteID | Nombre | Dirección |
| 1 | Ana García | Av. Lima 245 |
| 2 | Carlos Ruiz | Calle 9 #123 |
DetalleVentas
| VentaID | Producto | Cantidad |
| 1 | Laptop | 1 |
| 1 | Mouse | 2 |
| 2 | Teclado | 1 |
| 3 | Laptop | 1 |
4. Tercera Forma Normal (3FN): Eliminar dependencias transitivas
Productos
| ProductoID | Nombre | PrecioUnitario |
| 1 | Laptop | 2000 |
| 2 | Mouse | 50 |
| 3 | Teclado | 300 |
DetalleVentas Actualizado
| VentaID | ProductoID | Cantidad |
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 2 | 3 | 1 |
| 3 | 1 | 1 |
5. Modelo final en 3FN
Tablas Finales
- Ventas: VentaID (PK), Fecha, ClienteID (FK)
- Clientes: ClienteID (PK), Nombre, Dirección
- Productos: ProductoID (PK), Nombre, PrecioUnitario
- DetalleVentas: VentaID (FK), ProductoID (FK), Cantidad
¿Qué logramos con esta normalización?
- Se eliminaron las redundancias.
- Los datos están separados por entidades claras.
- Se resolvieron dependencias parciales y transitivas.
- Modelo relacional limpio, robusto y escalable.
- Permite reportes como ventas, ingresos, compras recurrentes.