Skip to content
IRC-CodingIRC-Coding
ER-ModeloEntity RelationshipCardinalidadRelacionesModelado de datosBase de datos

ER-Modelos: Entity Relationship y Cardinalidad

ER-Modelos visualizan estructuras de bases de datos. Entities, relationships, cardinalidades (1:1, 1:n, n:m), atributos y notación Chen con ejemplos.

S

schutzgeist

4 min read
ER-Modelos: Entity Relationship y Cardinalidad

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

  1. Entity Type: Conjunto de entidades similares con los mismos atributos
  2. Weak Entity: Entidad sin identificación única, dependiente de otra entidad
  3. Relationship Type: Asociación entre dos o más tipos de entidades
  4. Attribute: Propiedad de una entidad o relación
  5. Primary Key: Identificador único de una entidad
  6. Foreign Key: Referencia a la clave primaria de otra entidad
  7. Cardinality: Número máximo y mínimo de instancias de relación
  8. 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 uno
  • O : 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

  1. ¿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).

  2. ¿Cuándo se necesita una tabla intermedia? Para relaciones n:m, ya que las bases de datos no soportan relaciones n:m directas.

  3. ¿Qué son entidades débiles? Entidades sin su propia clave primaria, dependientes de otras entidades.

  4. ¡Explica la notación Chen! Rectángulos para entidades, rombos para relaciones, óvalos para atributos.

Fuentes Más Importantes

  1. https://es.wikipedia.org/wiki/Modelo_entidad-relacion
  2. https://www.gatech.edu/coe/cse/er-diagrams
  3. https://www.lucidchart.com/pages/er-diagrams

Literatura Recomendada: Bases de Datos

Keine Bücher für Kategorie "datenbanken" gefunden.

Volver al blog
Share:

Entradas relacionadas