Ejemplo 5: 5FN
1. Ejemplo de Normalización hasta la 5FN #
El concepto de la 5FN es más relevante en sistemas donde varias entidades están relacionadas de manera compleja y sus combinaciones generan redundancias. Aquí presento un ejemplo más adecuado:
Enunciado: #
Una agencia de viajes organiza paquetes turísticos que combinan clientes, destinos y guías turísticos. La relación entre estos tres elementos crea redundancia porque:
- Un cliente puede estar interesado en varios destinos.
- Un destino puede tener múltiples guías disponibles.
- Cada guía puede atender a múltiples clientes en distintos destinos.
La tabla inicial está estructurada así:
Tabla Inicial (No Normalizada): #
| ID_Paquete | Cliente | Destino | Guía |
|---|---|---|---|
| 1 | Ana Pérez | París | Carlos Gómez |
| 1 | Ana Pérez | Londres | Carlos Gómez |
| 1 | Ana Pérez | París | María López |
| 2 | Pedro López | Roma | Carlos Gómez |
| 2 | Pedro López | París | María López |
2. Problemas: #
- Redundancia: Las combinaciones de cliente, destino y guía se repiten, aunque la relación entre cada elemento es independiente.
- Dificultad de mantenimiento: Si cambian los guías disponibles para un destino o los clientes asociados a un paquete, es necesario modificar múltiples filas.
3. Dependencias Funcionales y de Unión: #
- Cada cliente puede estar asociado a varios destinos.
- Cada destino puede tener varios guías asignados.
- La relación entre cliente, destino y guía es una combinación de múltiples tablas base.
4. Normalización hasta la 5FN: #
Paso 1: Identificar las relaciones independientes #
Dividimos la tabla inicial en relaciones básicas:
- Relación entre clientes y paquetes turísticos.
- Relación entre destinos y paquetes turísticos.
- Relación entre guías turísticos y destinos.
Tablas resultantes: #
- Tabla Clientes_Paquetes:
Relación entre clientes y paquetes turísticos.
| ID_Paquete | Cliente |
|---|---|
| 1 | Ana Pérez |
| 2 | Pedro López |
- Tabla Paquetes_Destinos:
Relación entre paquetes turísticos y destinos.
| ID_Paquete | Destino |
|---|---|
| 1 | París |
| 1 | Londres |
| 2 | Roma |
| 2 | París |
- Tabla Destinos_Guías:
Relación entre destinos y guías turísticos.
| Destino | Guía |
|---|---|
| París | Carlos Gómez |
| París | María López |
| Londres | Carlos Gómez |
| Roma | Carlos Gómez |
Paso 2: Reconstrucción de los datos originales #
Para obtener la relación original entre cliente, destino y guía, sería necesario unir estas tres tablas:
- Un cliente se asocia a un paquete turístico.
- Un paquete turístico incluye múltiples destinos.
- Cada destino tiene varios guías disponibles.
Esquema relacional final: #
-
Relaciones entre tablas:
Tabla Clientes_Paquetes.ID_Paquete→ FK deTabla Paquetes_Destinos.ID_Paquete.Tabla Paquetes_Destinos.Destino→ FK deTabla Destinos_Guías.Destino.
-
Claves primarias:
Tabla Clientes_Paquetes:(ID_Paquete, Cliente).Tabla Paquetes_Destinos:(ID_Paquete, Destino).Tabla Destinos_Guías:(Destino, Guía).
5. Ventajas del modelo en 5FN: #
-
Eliminación completa de redundancia:
- Los datos como
Cliente,DestinoyGuíano se repiten innecesariamente.
- Los datos como
-
Flexibilidad:
- Es fácil agregar nuevos clientes, destinos o guías sin afectar la estructura.
-
Mantenimiento simplificado:
- Si un guía deja de estar disponible para un destino, solo se modifica la tabla
Destinos_Guías.
- Si un guía deja de estar disponible para un destino, solo se modifica la tabla
6. Ejemplo reconstruido: #
Si queremos saber qué guía atiende a qué cliente en un destino específico, combinamos las tablas:
- De
Clientes_Paquetes, obtenemos los clientes de un paquete. - De
Paquetes_Destinos, obtenemos los destinos del paquete. - De
Destinos_Guías, obtenemos los guías para cada destino.