Modelado logico relacional de bases de datos


Dado el ejercicio anterior normalizado en 2FN, vamos a continuar con la normalización hasta la 3FN.

Resolución del Ejercicio: Normalización hasta la 3FN


Resultado de la normalización en 2FN:

Tablas normalizadas en 2FN:

  1. Tabla Compras:
ID_CompraClienteFecha_CompraTelefono
1Ana Pérez2024-11-20777-777-777
2Pedro López2024-11-21888-888-888
3Marta Sánchez2024-11-22999-999-999
  1. Tabla Productos:
ProductoPrecio
Manzanas1.5
Naranjas2.0
Plátanos1.0
Peras1.2
Melón3.5
Uvas2.5
  1. Tabla Detalle_Compra:
ID_CompraProductoCantidad
1Manzanas2
1Naranjas3
2Plátanos4
2Peras2
2Melón1
3Uvas1

forma normal 2

Paso 1: Identificar dependencias transitivas

Para cumplir la 3FN, eliminamos dependencias transitivas, es decir, cuando un atributo no clave depende de otro atributo no clave.

Dependencias transitivas detectadas:

  • En la Tabla Compras, el atributo Cliente tiene una dependencia transitiva:
    ID_CompraClienteInformación del Cliente (como nombre, teléfono, dirección, etc.).
    Esto implica que los datos del cliente están redundantes si se repiten en varias compras.

Paso 2: Crear una tabla separada para los clientes

Solución: Extraer los datos del cliente a una tabla independiente y referenciarla desde la tabla de compras usando una clave foránea.


Tablas normalizadas en 3FN

  1. Tabla Clientes:
ID_ClienteNombreTeléfono
101Ana Pérez777-777-777
102Pedro López888-888-888
103Marta Sánchez999-999-999

  1. Tabla Compras:
ID_CompraID_ClienteFecha_Compra
11012024-11-20
21022024-11-21
31032024-11-22

  1. Tabla Productos:
ProductoPrecio
Manzanas1.5
Naranjas2.0
Plátanos1.0
Peras1.2
Melón3.5
Uvas2.5

  1. Tabla Detalle_Compra:
ID_CompraProductoCantidad
1Manzanas2
1Naranjas3
2Plátanos4
2Peras2
2Melón1
3Uvas1

Paso 3: Esquema relacional final

  1. Relaciones:

    • Tabla Compras.ID_Cliente → FK de Tabla Clientes.ID_Cliente.
    • Tabla Detalle_Compra.ID_Compra → FK de Tabla Compras.ID_Compra.
    • Tabla Detalle_Compra.Producto → FK de Tabla Productos.Producto.
  2. Claves primarias:

    • Tabla Clientes: ID_Cliente.
    • Tabla Compras: ID_Compra.
    • Tabla Productos: Producto.
    • Tabla Detalle_Compra: (ID_Compra, Producto).

forma normal 3

Explicación de los cambios

  1. Eliminación de redundancia en clientes:

    • Los datos del cliente (como el teléfono) ahora están centralizados en la tabla Clientes. Esto evita que el nombre del cliente se repita en cada compra.
  2. Separación de responsabilidades:

    • Cada tabla ahora almacena información específica:
      • Clientes contiene información de los clientes.
      • Compras contiene información general de cada compra.
      • Productos contiene datos de los productos.
      • Detalle_Compra relaciona compras y productos.
  3. Cumplimiento de la 3FN:

    • Todas las dependencias funcionales están directas, sin transitivas.

Ventajas del modelo en 3FN

  1. Reducción máxima de redundancia:

    • Los datos del cliente y productos no se repiten innecesariamente.
  2. Facilidad de actualización:

    • Cambiar la información de un cliente o el precio de un producto afecta solo una tabla.
  3. Consistencia:

    • La base de datos es menos propensa a inconsistencias.
  • Planteamiento del problema

    Tienes la siguiente tabla que ya cumple con la 2FN pero no cumple con la 3FN debido a dependencias transitivas:

    Factura_IDCliente_IDNombre_ClienteFechaTotalCiudad_ClienteCodigo_Postal
    11001Juan Pérez2024-11-20250.00Madrid28001
    21002María Gómez2024-11-21150.00Barcelona08001
    31001Juan Pérez2024-11-21300.00Madrid28001
    Loading...

    Problemas en el diseño

    1. Nombre_Cliente, Ciudad_Cliente y Código_Postal dependen de Cliente_ID, no directamente de Factura_ID.
    2. Existe una dependencia transitiva:
      • Cliente_ID → (Nombre_Cliente, Ciudad_Cliente, Código_Postal)
      • Pero Factura_ID no debería determinar esos valores.

    Esto viola la 3FN, ya que los atributos no clave no dependen únicamente de la clave primaria directa (Factura_ID).


    Instrucciones

    1. Identifica las dependencias transitivas en la tabla original.
    2. Descompón la tabla para eliminar estas dependencias y cumplir con la 3FN.
    3. Usa claves primarias y foráneas para vincular las tablas.
    4. Representa las tablas resultantes con un diagrama relacional.

    Loading...