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:

  1. Un cliente puede estar interesado en varios destinos.
  2. Un destino puede tener múltiples guías disponibles.
  3. Cada guía puede atender a múltiples clientes en distintos destinos.

La tabla inicial está estructurada así:


Tabla Inicial (No Normalizada):

ID_PaqueteClienteDestinoGuía
1Ana PérezParísCarlos Gómez
1Ana PérezLondresCarlos Gómez
1Ana PérezParísMaría López
2Pedro LópezRomaCarlos Gómez
2Pedro LópezParísMaría López

forma normal 5 no normalizada

Problemas:

  1. Redundancia: Las combinaciones de cliente, destino y guía se repiten, aunque la relación entre cada elemento es independiente.
  2. 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:

  1. Cada cliente puede estar asociado a varios destinos.
  2. Cada destino puede tener varios guías asignados.
  3. 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:

  1. Relación entre clientes y paquetes turísticos.
  2. Relación entre destinos y paquetes turísticos.
  3. Relación entre guías turísticos y destinos.

Tablas resultantes:

  1. Tabla Clientes_Paquetes:
    Relación entre clientes y paquetes turísticos.
ID_PaqueteCliente
1Ana Pérez
2Pedro López

  1. Tabla Paquetes_Destinos:
    Relación entre paquetes turísticos y destinos.
ID_PaqueteDestino
1París
1Londres
2Roma
2París

  1. Tabla Destinos_Guías:
    Relación entre destinos y guías turísticos.
DestinoGuía
ParísCarlos Gómez
ParísMaría López
LondresCarlos Gómez
RomaCarlos Gómez

forma normal 5

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:

  1. Un cliente se asocia a un paquete turístico.
  2. Un paquete turístico incluye múltiples destinos.
  3. Cada destino tiene varios guías disponibles.

Esquema relacional final:

  1. Relaciones entre tablas:

    • Tabla Clientes_Paquetes.ID_Paquete → FK de Tabla Paquetes_Destinos.ID_Paquete.
    • Tabla Paquetes_Destinos.Destino → FK de Tabla Destinos_Guías.Destino.
  2. 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:

  1. Eliminación completa de redundancia:

    • Los datos como Cliente, Destino y Guía no se repiten innecesariamente.
  2. Flexibilidad:

    • Es fácil agregar nuevos clientes, destinos o guías sin afectar la estructura.
  3. Mantenimiento simplificado:

    • Si un guía deja de estar disponible para un destino, solo se modifica la tabla Destinos_Guías.

Ejemplo reconstruido:

Si queremos saber qué guía atiende a qué cliente en un destino específico, combinamos las tablas:

  1. De Clientes_Paquetes, obtenemos los clientes de un paquete.
  2. De Paquetes_Destinos, obtenemos los destinos del paquete.
  3. De Destinos_Guías, obtenemos los guías para cada destino.