Modelos ER: Entity Relationship, Relaciones y Cardinalidad
Este artículo es una explicación de conceptos sobre modelos Entity-Relationship, incluyendo relaciones, cardinalidades y ejemplos prácticos.
En Resumen
Los modelos ER son representaciones gráficas que visualizan estructuras de bases de datos, describiendo entidades, relaciones y sus cardinalidades.
Descripción Técnica Compacta
Entity-Relationship Modeling es un método para diseñar bases de datos a nivel conceptual. Visualiza la estructura de datos antes de la implementación técnica.
Componentes principales:
- Entities: Objetos del mundo real (cliente, producto, pedido)
- Relationships: Relaciones entre entidades (clientes → realizar → productos)
- Attributes: Propiedades de entidades (nombre, precio, fecha)
- Cardinalidades: Cantidad de relaciones (1:1, 1:n, n:m)
Notaciones:
- Notación Chen: Rectángulos para entidades, rombos para relaciones
- Crow’s Foot: Notación moderna con patas de cuervo para cardinalidades
- Diagramas de clase UML: Representación extendida con métodos
Los modelos ER sirven como medio de comunicación entre desarrolladores, administradores de bases de datos y expertos del dominio. Forman la base para el modelado lógico de datos y la normalización subsecuente.
Puntos Clave para Evaluación
- Entities: Objetos reales con identificación única
- Relationships: Relaciones entre entidades con cardinalidades
- Cardinalidades: Las relaciones 1:1, 1:n, n:m definen la cantidad de conexiones
- Attributes: Propiedades de entidades (simples, compuestos, derivados)
- Notación Chen: Notación clásica ER con rectángulos y rombos
- Crow’s Foot: Notación moderna con representación intuitiva de cardinalidades
- Relevancia profesional: Importante para diseño y modelado de bases de datos
- Normalización: Los modelos ER forman la base para el proceso de normalización
Componentes Clave
- Entity Type: Conjunto de entidades similares con los mismos atributos
- Weak Entity: Entidad sin identificación única, dependiente de otra entidad
- Relationship Type: Asociación entre dos o más tipos de entidades
- Attribute: Propiedad de una entidad o relación
- Primary Key: Identificador único de una entidad
- Foreign Key: Referencia a la clave primaria de otra entidad
- Cardinality: Número máximo y mínimo de instancias de relación
- Participation: Si una entidad debe participar en una relación (total/parcial)
Ejemplos Prácticos
Relación 1:1
-- Cada empleado tiene exactamente un escritorio
CREATE TABLE Empleados (
empleado_id INT PRIMARY KEY,
nombre VARCHAR(100),
fecha_nacimiento DATE
);
CREATE TABLE Escritorios (
escritorio_id INT PRIMARY KEY,
edificio VARCHAR(50),
piso INT,
sala INT,
empleado_id INT UNIQUE, -- Relación 1:1
FOREIGN KEY (empleado_id) REFERENCES Empleados(empleado_id)
);
Relación 1:n
-- Un cliente puede tener muchos pedidos
CREATE TABLE Clientes (
cliente_id INT PRIMARY KEY,
nombre VARCHAR(100),
direccion VARCHAR(200)
);
CREATE TABLE Pedidos (
pedido_id INT PRIMARY KEY,
fecha_pedido DATE,
monto_total DECIMAL(10,2),
cliente_id INT, -- Relación 1:n
FOREIGN KEY (cliente_id) REFERENCES Clientes(cliente_id)
);
Relación n:m (con Tabla Intermedia)
-- Estudiantes pueden tomar muchos cursos, cursos tienen muchos estudiantes
CREATE TABLE Estudiantes (
estudiante_id INT PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE Cursos (
curso_id INT PRIMARY KEY,
nombre_curso VARCHAR(100),
creditos INT
);
-- Tabla intermedia para relación n:m
CREATE TABLE EstudiantesCursos (
estudiante_id INT,
curso_id INT,
fecha_inscripcion DATE,
calificacion DECIMAL(3,1),
PRIMARY KEY (estudiante_id, curso_id),
FOREIGN KEY (estudiante_id) REFERENCES Estudiantes(estudiante_id),
FOREIGN KEY (curso_id) REFERENCES Cursos(curso_id)
);
Modelo ER Complejo (Ejemplo Biblioteca)
-- Entidades con diversas relaciones
CREATE TABLE Autores (
autor_id INT PRIMARY KEY,
nombre VARCHAR(100),
anio_nacimiento INT
);
CREATE TABLE Libros (
libro_id INT PRIMARY KEY,
titulo VARCHAR(200),
isbn VARCHAR(20) UNIQUE,
anio_publicacion INT
);
CREATE TABLE Editoriales (
editorial_id INT PRIMARY KEY,
nombre VARCHAR(100),
sede VARCHAR(100)
);
CREATE TABLE Clientes (
cliente_id INT PRIMARY KEY,
nombre VARCHAR(100),
fecha_membresia DATE
);
-- Relaciones
-- n:m: Autores escriben libros
CREATE TABLE LibrosAutores (
libro_id INT,
autor_id INT,
PRIMARY KEY (libro_id, autor_id),
FOREIGN KEY (libro_id) REFERENCES Libros(libro_id),
FOREIGN KEY (autor_id) REFERENCES Autores(autor_id)
);
-- n:1: Libros son publicados por editoriales
ALTER TABLE Libros ADD editorial_id INT;
ALTER TABLE Libros ADD FOREIGN KEY (editorial_id) REFERENCES Editoriales(editorial_id);
-- 1:n: Clientes prestan libros
CREATE TABLE Prestamos (
prestamo_id INT PRIMARY KEY,
cliente_id INT,
libro_id INT,
fecha_prestamo DATE,
fecha_devolucion DATE,
FOREIGN KEY (cliente_id) REFERENCES Clientes(cliente_id),
FOREIGN KEY (libro_id) REFERENCES Libros(libro_id)
);
Comparación de Notaciones ER
Notación Chen
[ CLIENTE ] ---< realiza >--- [ PRODUCTO ]
| |
|1 |n
| |
[DIRECCION] [CATEGORIA]
Notación Crow’s Foot
CLIENTE ||--o{ POSICION_PEDIDO } ||--| PRODUCTO
| |
| |
DIRECCION CATEGORIA
Símbolos de Cardinalidad
|: Exactamente unoO: Cero o uno}: Cero o más|{: Exactamente uno o más
Tipos de Atributos
Atributos Simples
nombre VARCHAR(100) -- Simple
precio DECIMAL(10,2) -- Simple
fecha DATE -- Simple
Atributos Compuestos
-- Dirección como atributo compuesto
calle VARCHAR(100),
numero VARCHAR(10),
codigo_postal VARCHAR(5),
ciudad VARCHAR(100)
Atributos Derivados
-- Valores calculados
edad INT AS (YEAR(CURRENT_DATE) - YEAR(fecha_nacimiento)),
precio_total DECIMAL(10,2) AS (cantidad * precio_unitario)
Atributos Multivaluados
-- Múltiples valores por entidad
CREATE TABLE Telefonos (
cliente_id INT,
telefono VARCHAR(20),
PRIMARY KEY (cliente_id, telefono),
FOREIGN KEY (cliente_id) REFERENCES Clientes(cliente_id)
);
Ventajas e Inconvenientes
Ventajas de los Modelos ER
- Visualización: Representación intuitiva de estructuras de datos complejas
- Comunicación: Lenguaje común para expertos del dominio y desarrolladores
- Documentación: Buena documentación de la estructura de la base de datos
- Planificación: Base para la implementación de la base de datos
- Calidad: Identificación temprana de errores de diseño
Inconvenientes
- Complejidad: Poco manejable en sistemas muy grandes
- Abstracción: Los detalles de implementación no son visibles
- Mantenimiento: Los cambios requieren ajustes del modelo
- Curva de aprendizaje: Requiere comprensión de las notaciones
Preguntas Frecuentes de Evaluación
-
¿Cuál es la diferencia entre relaciones 1:n y n:m? 1:n: Un registro en la izquierda puede tener muchos registros en la derecha. n:m: Muchos registros en la izquierda pueden tener muchos registros en la derecha (requiere tabla intermedia).
-
¿Cuándo se necesita una tabla intermedia? Para relaciones n:m, ya que las bases de datos no soportan relaciones n:m directas.
-
¿Qué son entidades débiles? Entidades sin su propia clave primaria, dependientes de otras entidades.
-
¡Explica la notación Chen! Rectángulos para entidades, rombos para relaciones, óvalos para atributos.
Fuentes Más Importantes
- https://es.wikipedia.org/wiki/Modelo_entidad-relacion
- https://www.gatech.edu/coe/cse/er-diagrams
- https://www.lucidchart.com/pages/er-diagrams
Literatura Recomendada: Bases de Datos
Keine Bücher für Kategorie "datenbanken" gefunden.



