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:
- Entidad: Un objeto del mundo real que puede ser identificado de manera única.
- Atributo: Una propiedad o característica de una entidad.
- Clave Primaria: Un atributo o conjunto de atributos que identifican de manera única a una entidad.
- Relación: Una asociación entre dos o más entidades.
- 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
- 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 );
- 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) );
- 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) );
- 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) );
- 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);
- 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 atributosClienteID
,Nombre
,Email
. - Entidad
Pedido
con atributosPedidoID
,Fecha
,Monto
. - Relación uno a muchos entre
Cliente
yPedido
(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.
Fundamentos de Bases de Datos
Módulo 1: Introducción a las Bases de Datos
- Conceptos Básicos de Bases de Datos
- Tipos de Bases de Datos
- Historia y Evolución de las Bases de Datos
Módulo 2: Bases de Datos Relacionales
Módulo 3: Bases de Datos No Relacionales
- Introducción a NoSQL
- Tipos de Bases de Datos NoSQL
- Comparación entre Bases de Datos Relacionales y No Relacionales
Módulo 4: Diseño de Esquemas
- Principios de Diseño de Esquemas
- Diagramas Entidad-Relación (ER)
- Transformación de Diagramas ER a Esquemas Relacionales