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:

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:


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

  1. 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.
  2. 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...).
  3. 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:

Modelo E/R→Modelo Relacional→SQL
¿Por qué independizar el diseño conceptual?

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.

También podemos definir algunas propiedades adicionales, como:

Nomenclatura

Existe una estandarización en el nombrado de los diferentes elementos del modelo de entidad relación:

Elementos del Modelo Entidad-Relación

A la hora de diseñar esquemas conceptuales utilizaremos dos notaciones gráficas equivalentes:

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 vs. Instancia/Ocurrencia

  • 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:

  1. 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.
  2. Cada ocurrencia/instancia de esa entidad debe poder distinguirse de las demás.
  3. 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.

ut02-entidades.png

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
ut02-atributos-chen.png ut02-atributos-bloque.png

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.

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.

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

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:

Equivalencia técnica

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 >0
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.
ut02-relaciones.png

Las relaciones entre 2 entidades contienen 2 direcciones, por lo que esta relación se puede leer como:

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:

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.

Ejemplo

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:
ut02-ejemplo-super.png
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 (min, max) situado junto a una entidad expresa cuántas veces puede relacionarse la entidad del extremo opuesto con ella, quedando el ejemplo anterior de la siguiente manera:
ut02-ejemplo-super-participacion.png
Para entender bien este cambio, se recomienda la siguiente lectura:

Lectura sintáctica

Suponiendo la estructura sintáctica "Sujeto + Verbo + Predicado", leeríamos lo siguiente:

PRODUCTO→PERTENECER→(1,1)→CATEGORIA

Es decir: "un PRODUCTO pertenece a MÍNIMO 1 y MÁXIMO 1 CATEGORIA". En sentido contrario tendríamos:

CATEGORIA→PERTENECER→(0,n)→PRODUCTO

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
ut02-crow-0.png Representa 0
ut02-crow-1.png Representa 1
ut02-crow-N.png Representa N

Recuperando la tabla del apartado anterior:

Participación Representación gráfica
(0,1) ut02-crow-01.png
(1,1) ut02-crow-11.png
(0,n) ut02-crow-0N.png
(1,n) ut02-crow-1N.png

El ejemplo de producto-categoría quedaría entonces representado de la siguiente manera:
ut02-ejemplo-super-crow.png

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 (min,max) en ambos extremos, la cardinalidad global se obtiene tomando exclusivamente los valores máximos (max) de cada cardinalidad individual.

ut02-ejemplo-super-cardinalidad.png

Al combinar ambos máximos, determinamos que el tipo de correspondencia es Uno a Muchos (1:N), donde el lado "1" corresponde a CATEGORIA y el lado "N" (o "m") corresponde a PRODUCTO.

Siguiendo la notación de pata de gallo, nos quedaríamos con lo siguiente:
ut02-ejemplo-super-cardinalidad-crow.png
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
1:1 Uno a Uno Una instancia de A se asocia como máximo con una de B, y viceversa. DEPARTAMENTO →DIRIGIR EMPLEADO
1:N Uno a Muchos Una instancia de A se asocia con muchas de B, pero una de B solo con una de A. CATEGORIA →PERTENECER PRODUCTO
N:M Muchos a Muchos Una instancia de A se asocia con muchas de B, y una de B con muchas de A. ALUMNO →MATRICULAR 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.

Ejemplo

Si analizamos la relación COMPRAR entre las entidades CLIENTE y LIBRO:

  • El atributo fechaCompra no pertenece a CLIENTE (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:

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):
ut02-ejemplo-libro-cardinalidad.png

Podemos añadir los atributos fechaCompra y descuentoAplicado de la siguiente manera:

Notación de Chen
ut02-ejemplo-libro-atributos-cardinalidad.png

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 [0,100] (porcentaje)

  1. Según la RAE: "Separar por medio de una operación intelectual un rasgo o una cualidad de algo para analizarlos aisladamente o considerarlos en su pura esencia o noción" ↩︎