UT02 - Modelo entidad relación
Conexión legislativa
En esta Unidad de Trabajo nos centraremos en BBDD-CE-06.a, BBDD-CE-06.b, BBDD-CE-06.c, BBDD-CE-06.d y BBDD-CE-06.e
Introducción
Las bases de datos son uno de los grandes pilares del desarrollo de software, ya que son la tecnología que nos permite consultar, almacenar y manipular datos masivos de manera eficiente. La información que contienen representa un dominio del mundo real. El diseño de la base de datos pasa por extraer todos los datos relevantes de un problema. Por ejemplo:
Los productos, su cantidad, su precio, el IVA aplicado a cada uno, la forma de pago, los datos del cliente...
Para extraer estos datos es necesario hacer un análisis del dominio del problema para saber qué datos son necesarios para la base de datos y cuáles pueden descartarse. Tras ello, comienza un proceso de modelización. En este proceso se busca la manera de representar, a través de diagramas estandarizados, la estructura de la base de datos (normalmente siguiendo un modelo relacional).
Estos diagramas ayudan a entender los datos y cómo se relacionan entre ellos. Algunos de los elementos fundamentales de estos diagramas son:
- Entidades: representan los objetos, conceptos o personas del mundo real sobre los que queremos guardar información. Se representan formalmente mediante rectángulos y sus nombres suelen ser sustantivos.
- Atributos: son las propiedades o características individuales que describen a una entidad. Se representan mediante elipses conectadas a la entidad correspondiente (usando la notación clásica), o bien como tabla con el nombre de la entidad como cabecera (usando la notación en bloque). También son sustantivos.
- Relaciones: expresan las asociaciones, vínculos o interacciones que existen entre dos o más entidades. Se representan mediante rombos y suelen nombrarse con verbos.
- Cardinalidad: indica el número de instancias de una entidad que pueden estar asociadas con una instancia de otra entidad.
Si aplicamos estos conceptos al caso del supermercado:
- Entidades:
Cliente,ProductoyVenta. - Atributos: para
ClientetendríamosDNI,NombreyTeléfono. ParaProductoguardaríamosCódigo,Nombre,Precio,IVA. - Relaciones: la asociación Realiza entre
ClienteyVenta, o la asociación Contiene entreVentayProducto. - Cardinalidad: un
Clientepuede realizar muchasVentas, pero unaVentaconcreta es realizada por un únicoCliente().
El proceso de modelización
Antes de empezar a desarrollar una aplicación para un cliente, los informáticos analizan el problema que quieren resolver a través de reuniones con los futuros usuarios del sistema. Con estas reuniones se redacta un documento llamado ERS (Especificación de Requisitos de Software). A partir del ERS se extrae la información para la modelización de los datos.
La modelización consiste en representar un problema realizando múltiples abstracciones[1] para asimilar toda la información de un problema y proponer un esquema que capture de forma precisa la estructuración de la información, omitiendo detalles de implementacioń técnica que no aportan valor en las etapas iniciales.
En el desarrollo de software, el diseño de una base de datos no se realiza directamente en el SGBD, sino que se sigue un proceso estrucutrado en tres niveles de abstracción
- El Diseño Conceptual: qué datos existen y cómo se relacionan entre ellos. Es completamente independiente del software o la tecnología y tiene una gran potencia para expresar el dominio del problema. El más utilizado es el Modelo Entidad-Relación (E/R), y es el que seguiremos en este curso.
- Diseño Lógico: se traduce el diseño conceptual al paradigma elegido. El modelo elegido dependerá del modelo de datos que elijamos para el SGBD. No es lo mismo modelizar para una base de datos orientada a objetos que para una base de datos relacional. Nosotros, principalmente elegiremos el Modelo Relacional (con tablas, claves primarias, claves foráneas...).
- Diseño Físico: adapta el esquema lógico al SGBD concreto (MySQL, MariaDB, Oracle, PostgreSQL...). Está expresado en un lenguaje de programación de BBDD. En este curso, nos centraremos en SQL (en esta fase se utiliza concretamente DDL) .
En resumen, nosotros nos centraremos principalmente en:
Comenzar directamente creando tablas en SQL suele derivar en malas prácticas que provocan redundancia de datos y otra serie de fallos de difíciles de corregir. El diseño conceptual sirve de "plano arquitectónico" para validar las reglas del negocio con el cliente o analista antes de escribir código.
No obstante, un diseñador experimentado puede realizar el diseño directamente en modelo relacional cuando el problema a resolver es relativamente sencillo.
Diseño Conceptual en BBDD
El modelo conceptual es el primer paso en la modelización de los objetos, procesos y conceptos del mundo real que intervienen en el dominio de nuestra aplicación. Su objetivo es formalizar qué información debe almacenar la base de datos sin entrar en detalles técnicos de implementación o de software.
Para representar este esquema utilizaremos el Modelo Entidad-Relación (E/R). Aunque tradicionalmente se empleaba la notación de Chen (que conecta cada atributo mediante elipses alrededor de la entidad), en este curso aprenderemos ambas, pero nos centraremos en la notación en bloque (o estructurada), que agrupa la entidad y sus atributos en una misma caja para ofrecer diagramas más limpios y legibles.
El modelo E/R describe el mundo real como un conjunto de entidades y sus atributos, así como las relaciones existentes entre diferentes entidades.
- Las entidades son objetos, conceptos, personas, sucesos, eventos... cualquier cosa con existencia independiente sobre la que se quiera almacenar información. Por ejemplo:
PERSONA,VEHICULO,ASIGNATURA... - Los atributos representan cualquier información que queramos guardar sobre las entidades. Ejemplos de atributos de
PERSONAsonnombre,direccion,dni... - Las relaciones son asociaciones entre entidades. Estas también pueden contener información adicional en forma de atributos que no son propios de ninguna de las entidades de la relación. Ejemplos de relaciones:
- Entre
PERSONAyVEHICULO:POSEER. - Entre
PERSONAyASIGNATURA:MATRICULAR.
- Entre
También podemos definir algunas propiedades adicionales, como:
- Cardinalidad: número mínimo y máximo de instancias de una entidad que pueden estar vinculadas con las de otra entidad. Por ejemplo: una
PERSONApuedePOSEERmuchosVEHICULO, pero unVEHICULOsólo pertenece a 1PERSONA. - Operaciones: operaciones válidas que pueden realizarse sobre las entidades o sus relaciones. Por ejemplo: una
PERSONApuede transferir la propiedad de unVEHICULO. - Restricciones: posibles valores que puede tener un atributo o condiciones que deben cumplirse para realizar una operación. Por ejemplo: una
PERSONAno puede tener el atributodnivacío, o no puede transferir la propiedad de unVEHICULOsi tiene multas pendientes de pago.
Nomenclatura
Existe una estandarización en el nombrado de los diferentes elementos del modelo de entidad relación:
- Las entidades son sustantivos en singular y mayúsculas.
- Los atributos son sustantivos en singular y minúsculas.
- Las relaciones son verbos en infinitivo y mayúsculas.
- Para los nombres compuestos:
- En el caso de las entidades y los verbos: se utiliza SCREAMING_SNAKE_CASE (se utilizan guiones bajos para separar las palabras)
- En el caso de los atributos: se utiliza camelCase (la primera letra de la segunda palabra y sucesivas se escribe en mayúsculas)
Elementos del Modelo Entidad-Relación
A la hora de diseñar esquemas conceptuales utilizaremos dos notaciones gráficas equivalentes:
- Notación de Chen: la representación clásica mediante elipses conectadas a rectángulos.
- Notación en Bloque (estilo lista): la representación estructurada dentro de cajas, más limpia y cercana al desarrollo de software.
Entidades
Una entidad representa cualquier objeto, concepto, persona, suceso o evento del mundo real con existencia independiente sobre el que la aplicación necesita almacenar información. Hay que destacar que, cuando hablamos de entidades en el modelo E/R, en realidad nos referimos al tipo de entidad, no a todas las posibles entidades específicas de dicho tipo. Por ejemplo: PERSONA es una entidad que aglutina a todas las instancias que compartan los mismos atributos, no hay que definir una entidad para cada persona del mundo. Eso sería una locura.
- Entidad: el concepto general o clase (
VEHICULO). - Instancia u Ocurrencia: un elemento concreto de ese tipo (el coche con matrícula
1234BCD).
A la hora de diseñar un esquema conceptual, es muy habitual dudar sobre si un elemento del problema debe modelarse como una entidad o como un simple atributo. Para que un concepto sea considerado una entidad, debe cumplir tres condiciones fundamentales:
- Una entidad debe tener existencia propia. Es decir, debe representar un concepto u objeto del dominio con significado por sí mismo, y no una simple propiedad o característica descriptiva de otra cosa.
- Cada ocurrencia/instancia de esa entidad debe poder distinguirse de las demás.
- Todas las ocurrencias/instancias de esa entidad deben tener los mismos atributos (aunque sus valores concretos sean diferentes).
Su representación en el modelo E/R es un rectángulo con el nombre de la entidad en singular y mayúsculas. Además, se suele identificar con un sustantivo.

Ampliaremos las entidades en la próxima UT.
Atributos
Los atributos describen propiedades de las entidades y de las relaciones. Podría decirse que son "el contenido". Estos pueden ser de diferentes tipos, y todas las instancias de una entidad comparten los mismos atributos, pero no los valores (aunque no es infrecuente que diferentes instancias compartan valor en algunos de sus atributos). Para la misma instancia, no puede haber 2 atributos con el mismo nombre.
Utilizando la notación de Chen (la clásica), los atributos se representan como elipses y se unen con líneas a la entidad. Por otro lado, usando la notación en bloque se ubican en el interior del propio rectángulo de la entidad y dispuestos en forma de lista vertical. Esta disposición permite mantener los diagramas limpios, legibles y ordenados
| Chen | Bloque |
|---|---|
![]() | ![]() |
Tipos de atributos
En una primera clasificación, podemos identificar los siguientes tipos.
Atributo simple (o atómico)
Contiene un único valor indivisible con significado completo por sí solo. No se representa de forma especial.
- Ejemplos:
isbn,titulo,genero,numeroPaginas
Identificador (clave primaria, o PK)
Es el atributo que identifica de manera unívoca una instancia concreta de una entidad. Para indicar cuál es, se subraya la palabra.
- Ejemplo:
isbn
Toda entidad debe tener uno o más identificadores.
Atributo compuesto
Agrupación de varios atributos, bien sean simples o compuestos. En la notación de Chen, se represenan con elipses que se conectan mediante líneas a la del atributo principal. En la notación de bloque, se representan "tabulados" (sangrados) y con un guión
- Ejemplo:
autoragrupanombreyapellidos
Dominio de un atributo
El dominio representa el conjunto de todos los valores válidos que puede tomar un atributo en el sistema. Funciona como una primera restricción o regla de negocio sobre los datos almacenados.
El dominio puede definirse de dos formas:
- Por tipo de dato: especifica el tipo de información básica permitida (ej. texto, entero, fecha, booleano).
- Por rango o restricción explicita: limita la regla a un conjunto o intervalo concreto. Por ejemplo:
- El atributo
numeroPaginastiene como dominio los números reales positivos (). - El atributo
generotiene como dominio los valores cerrados{'Fantasía', 'Thriller', 'Ciencia Ficción'}.
- El atributo
El dominio de un atributo en el modelo conceptual equivale directamente al tipo de dato (VARCHAR, INT, DATE) y a las restricciones de validación (CHECK, NOT NULL) que se aplicarán posteriormente en la base de datos física y en la programación de la aplicación.
El dominio de los atributos no se representa gráficamente en los diagramas E/R, sino que es habitual acompañar de una tabla o Diccionario de Datos donde se especifiquen los tipos y restricciones de cada atributo.
| Entidad | Atributo | Tipo/Dominio | Restricción/Rango |
|---|---|---|---|
LIBRO | P. isbn | Texto | Formato ISBN-13 |
LIBRO | titulo | Texto | No vacío |
LIBRO | numeroPaginas | Entero | |
LIBRO | genero | Texto | {'Fantasía', 'Thriller', 'Ciencia Ficción'} |
Ampliaremos los atributos en la próxima UT.
Relaciones
Una relación representa una asociación entre dos o más entidades. Cada relación tiene un nombre que describe su función, tratando de evitar aquellos polisémicos o ambiguos. Por ejemplo: HACER o TENER no son nombres adecuados para relaciones, ya que no aportan información precisa sobre el propósito del vínculo en el negocio.
Se representan gráficamente mediante rombos con el nombre en el interior.

Las relaciones entre 2 entidades contienen 2 direcciones, por lo que esta relación se puede leer como:
- Un cliente compra uno o más libros, la relación va de
CLIENTEaLIBRO. - Un libro puede ser comprado por uno o más clientes, la relación también va de
LIBROaCLIENTE.
Esta lectura da lugar al grado y la cardinalidad.
Grado
El grado indica el número de entidades que participan en una misma relación:
- Grado 1 (Unaria/Reflexiva): vincula una entidad consigo misma. Ejemplo: un
EMPLEADOsupervisa a otrosEMPLEADO.

- Grado 2 (Binaria): asocia dos entidades distintas. Es el tipo de relación más habitual en el diseño conceptual. Ejemplo:
CLIENTECOMPRARLIBRO. - Grado
( -aria / Ternaria): involucra a tres o más entidades de forma simultánea. Ejemplo: un ALUMNOMATRICULARASIGNATURAlleva asociada una tercera entidad:MATRICULA.

De momento nos vamos a centrar en las relaciones binarias. En la siguiente UT veremos las otras dos.
Cardinalidad individual y global
Cardinalidad individual
La cardinalidad individual (también llamada participación) de una instancia de una entidad indica, mediante una pareja de números, el mínimo y máximo número de veces que puede aparecer en la relación asociada a otra instancia. Las posibles combinaciones son:
| Participación | Significado |
|---|---|
| (0,1) | Mínimo 0, máximo 1 |
| (1,1) | Mínimo 1, máximo 1 |
| (0,n) | Mínimo 0, máximo n (muchos) |
| (1,n) | Mínimo 1, máximo n (muchos) |
Para averiguar la cardinalidad individual de cada entidad en la relación que las une, elegimos cualquiera de las entidades implicadas y nos preguntamos con cuántas ocurrencias de la otra entidad se va a relacionar.
En un supermercado tenemos multitud de productos y sus respectivas categorías. Sabemos que todo producto tiene una categoría asignada (alimentación, papelería, hogar...), pero también puede haber categorías sin productos asignados. Un caso concreto:
- Un bote de garbanzos: pertenece solamente a la categoría alimentación, pero
- La categoría alimentación: tiene varios productos, como los garbanzos, el pan...
- Por otro lado, hay categorías que aún no tienen productos asignados, como mueble.
De esta definición podemos deducir la siguiente relación:

A continuación, podríamos definir las participaciones tal que así:
- CI(PRODUCTO, PERTENECER): (1, 1). Un producto pertenece a mínimo 1 categoría y máximo 1 categoría.
- CI(CATEGORIA, PERTENECER): (0, n). A una categoría pertenecen mínimo 0 productos y máximo n productos.
Una vez conocemos la cardinalidad individual de cada entidad en la relación es necesario cambiar la lectura, ya que esta se representa en el extremo opuesto de la relación. Es decir, el par (

Para entender bien este cambio, se recomienda la siguiente lectura:
Suponiendo la estructura sintáctica "Sujeto + Verbo + Predicado", leeríamos lo siguiente:
Es decir: "un PRODUCTO pertenece a MÍNIMO 1 y MÁXIMO 1 CATEGORIA". En sentido contrario tendríamos:
Es decir: "a una CATEGORIA pertenecen MÍNIMO 0 y MÁXIMO n PRODUCTO"
Notación de pata de gallo
Permite representar de manera gráfica la cardinalidad individual mediante la combinación de 3 símbolos:
| Símbolo | Descripción |
|---|---|
![]() | Representa 0 |
![]() | Representa 1 |
![]() | Representa N |
Recuperando la tabla del apartado anterior:
| Participación | Representación gráfica |
|---|---|
| (0,1) | ![]() |
| (1,1) | ![]() |
| (0,n) | ![]() |
| (1,n) | ![]() |
El ejemplo de producto-categoría quedaría entonces representado de la siguiente manera:

Cardinalidad global
La cardinalidad global es la propiedad que describe el tipo de correspondencia general que existe entre las dos entidades conectadas por la relación. Se calcula a través de las participaciones de sus ocurrencias en ella.
A diferencia de la cardinalidad individual, que evalúa el par completo

Al combinar ambos máximos, determinamos que el tipo de correspondencia es Uno a Muchos (CATEGORIA y el lado "N" (o "m") corresponde a PRODUCTO.
Siguiendo la notación de pata de gallo, nos quedaríamos con lo siguiente:

Apreciarás que nos quedamos solamente con los símbolos exteriores (los que están pegados a la entidad) de cada parte de la relación.
Clasificación según la cardinalidad global
Atendiendo a la combinación de sus valores máximos, las relaciones binarias se dividen en tres tipos:
| Tipo | Denominación | Descripción | Ejemplo típico |
|---|---|---|---|
| Uno a Uno | Una instancia de | DEPARTAMENTO EMPLEADO | |
| Uno a Muchos | Una instancia de | CATEGORIA PRODUCTO | |
| Muchos a Muchos | Una instancia de | ALUMNO MODULO |
Atributos en las relaciones
Aunque la gran mayoría de las propiedades pertenecen directamente a las entidades, las relaciones también pueden poseer atributos propios. Se trata de datos que no caracterizan de forma aislada a ninguna de las entidades participantes, sino que nacen del hecho concreto de relacionarse o de la transacción efectuada entre ellas.
Si analizamos la relación COMPRAR entre las entidades CLIENTE y LIBRO:
- El atributo
fechaComprano pertenece aCLIENTE(un mismo cliente realiza compras en muchas fechas distintas). - Tampoco pertenece a
LIBRO(la fecha describe el momento de la adquisición, no una propiedad intrínseca del ejemplar). - Es un atributo propio de la relación
COMPRAR, ya que describe una propiedad única de cada transacción concreta.
Representación gráfica
La forma de representar los atributos en una relación varía según la notación empleada:
- Notación de Chen: se representan mediante elipses conectadas directamente al rombo de la relación.
- Notación en Bloque: el diagrama se mantiene limpio, pero se añade al Diccionario de Datos los atributos que tuviera.
Recuperando el ejemplo de la compra del libro, añadiendo la cardinalidad adecuada (un cliente puede comprar muchos libros y un libro puede ser comprado sólo por 1 cliente):

Podemos añadir los atributos fechaCompra y descuentoAplicado de la siguiente manera:
| Notación de Chen |
|---|
![]() |
O bien especificándolo en el Diccionario de Datos:
| Entidad/Relación | Atributo | Tipo/Dominio | Restricción/Rango |
|---|---|---|---|
COMPRAR | fechaCompra | Fecha | Formato AAAA-MM-DD, posterior a 2000-01-01 |
COMPRAR | descuentoAplicado | Decimal | Intervalo |









