En este tema, aprenderemos cómo transformar un diagrama Entidad-Relación (ER) en un esquema relacional. Este proceso es fundamental para el diseño de bases de datos, ya que permite convertir un modelo conceptual en un modelo lógico que puede ser implementado en un sistema de gestión de bases de datos (DBMS).

Conceptos Clave

Antes de comenzar con la transformación, es importante entender algunos conceptos clave:

  1. Entidad: Un objeto del mundo real que puede ser identificado de manera única.
  2. Atributo: Una propiedad o característica de una entidad.
  3. Clave Primaria: Un atributo o conjunto de atributos que identifican de manera única a una entidad.
  4. Relación: Una asociación entre dos o más entidades.
  5. Clave Foránea: Un atributo en una tabla que es clave primaria en otra tabla y se usa para establecer relaciones entre tablas.

Pasos para la Transformación

  1. Entidades Simples

Cada entidad simple en el diagrama ER se convierte en una tabla en el esquema relacional. Los atributos de la entidad se convierten en columnas de la tabla.

Ejemplo:

Entidad Empleado con atributos ID, Nombre, Apellido, FechaNacimiento.

CREATE TABLE Empleado (
    ID INT PRIMARY KEY,
    Nombre VARCHAR(50),
    Apellido VARCHAR(50),
    FechaNacimiento DATE
);

  1. Entidades con Atributos Compuestos

Para entidades con atributos compuestos, cada componente del atributo compuesto se convierte en una columna separada.

Ejemplo:

Entidad Dirección con atributo compuesto Dirección que incluye Calle, Ciudad, Estado, CódigoPostal.

CREATE TABLE Direccion (
    ID INT PRIMARY KEY,
    Calle VARCHAR(100),
    Ciudad VARCHAR(50),
    Estado VARCHAR(50),
    CodigoPostal VARCHAR(10)
);

  1. Entidades con Atributos Multivaluados

Para atributos multivaluados, se crea una nueva tabla. Esta tabla incluye una clave foránea que referencia la entidad original y una columna para el atributo multivaluado.

Ejemplo:

Entidad Empleado con atributo multivaluado Teléfonos.

CREATE TABLE TelefonosEmpleado (
    EmpleadoID INT,
    Telefono VARCHAR(15),
    PRIMARY KEY (EmpleadoID, Telefono),
    FOREIGN KEY (EmpleadoID) REFERENCES Empleado(ID)
);

  1. Relaciones Uno a Uno

Para relaciones uno a uno, se puede agregar una clave foránea en una de las tablas o crear una nueva tabla que contenga las claves primarias de ambas entidades.

Ejemplo:

Relación Empleado y Pasaporte (un empleado tiene un pasaporte).

CREATE TABLE Pasaporte (
    EmpleadoID INT PRIMARY KEY,
    NumeroPasaporte VARCHAR(20),
    FechaExpedicion DATE,
    FechaVencimiento DATE,
    FOREIGN KEY (EmpleadoID) REFERENCES Empleado(ID)
);

  1. Relaciones Uno a Muchos

Para relaciones uno a muchos, se agrega una clave foránea en la tabla del lado "muchos" que referencia la clave primaria de la tabla del lado "uno".

Ejemplo:

Relación Departamento y Empleado (un departamento tiene muchos empleados).

CREATE TABLE Departamento (
    ID INT PRIMARY KEY,
    Nombre VARCHAR(50)
);

ALTER TABLE Empleado
ADD COLUMN DepartamentoID INT,
ADD FOREIGN KEY (DepartamentoID) REFERENCES Departamento(ID);

  1. Relaciones Muchos a Muchos

Para relaciones muchos a muchos, se crea una nueva tabla que contiene las claves primarias de ambas entidades como claves foráneas y claves primarias compuestas.

Ejemplo:

Relación Proyecto y Empleado (un empleado puede trabajar en muchos proyectos y un proyecto puede tener muchos empleados).

CREATE TABLE Proyecto (
    ID INT PRIMARY KEY,
    Nombre VARCHAR(100)
);

CREATE TABLE EmpleadoProyecto (
    EmpleadoID INT,
    ProyectoID INT,
    PRIMARY KEY (EmpleadoID, ProyectoID),
    FOREIGN KEY (EmpleadoID) REFERENCES Empleado(ID),
    FOREIGN KEY (ProyectoID) REFERENCES Proyecto(ID)
);

Ejercicio Práctico

Ejercicio

Transforma el siguiente diagrama ER en un esquema relacional:

  • Entidad Cliente con atributos ClienteID, Nombre, Email.
  • Entidad Pedido con atributos PedidoID, Fecha, Monto.
  • Relación uno a muchos entre Cliente y Pedido (un cliente puede hacer muchos pedidos).

Solución

CREATE TABLE Cliente (
    ClienteID INT PRIMARY KEY,
    Nombre VARCHAR(50),
    Email VARCHAR(50)
);

CREATE TABLE Pedido (
    PedidoID INT PRIMARY KEY,
    Fecha DATE,
    Monto DECIMAL(10, 2),
    ClienteID INT,
    FOREIGN KEY (ClienteID) REFERENCES Cliente(ClienteID)
);

Conclusión

La transformación de diagramas ER a esquemas relacionales es un paso crucial en el diseño de bases de datos. Este proceso asegura que el modelo conceptual se traduzca correctamente en un modelo lógico que puede ser implementado en un DBMS. Al seguir los pasos descritos, puedes garantizar que tu base de datos esté bien estructurada y sea eficiente.

En el próximo módulo, profundizaremos en los conceptos de normalización para optimizar aún más el diseño de tu base de datos.

© Copyright 2024. Todos los derechos reservados