Modelado logico relacional de bases de datos
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 |
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.
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.
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).
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
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.