Módulo 2. Diseño de una base de datos

Explicación del diagrama Entidad-Relación, el modelo relacional y la transformación del diagrama Entidad-Relación al modelo relacional.

Diagrama Entidad-Relación

Gracias al modelo conceptual Entidad-Relación, creado por Peter Chen en los años setenta, se puede representar el mundo real a través de una serie de símbolos y expresiones determinados. El objetivo de este modelo es obtener una representación de la realidad que capture sus propiedades.

Al tratarse de un modelo conceptual, no está orientado a ningún sistema físico concreto: tipo de ordenador, SGBD, sistema operativo... Tampoco tiene un objetivo informático concreto, podría perfectamente utilizarse para explicarle a una persona el funcionamiento de cualquier proceso, por lo que debe ser fácil de comprender.

Lo primero que se debe que hacer cuando se va a crear una base de datos es:

Antes de seguir con el diseño de diagramas, hay que aclarar que distintos autores utilizan distintos símbolos o maneras de representar algunos elementos y características del modelo E/R, por lo que mientras el diseño esté bien realizado, el modo de expresarlo no es lo más importante, mientras todos los que trabajen en el problema utilicen y entiendan los mismos elementos gráficos. En Internet encontraréis diferentes maneras de representar un diagrama entidad relación. Lo importante es que plasmen el problema que se estudia de manera correcta.

Entidades y relaciones

El primer paso para elaborar el diagrama E-R para una base de datos es:

Entidades

Al observar el mundo que rodea al problema que se quiere plasmar en el diagrama, se puede detectar el conjunto de objetos de los que se desea almacenar información. Todos los objetos de una misma clase se representan con un tipo de entidad concreto (por simplicidad, se les nombra simplemente entidades), que se diferencia de otra entidad porque posee ciertas características que la hacen única.

Cada entidad tendrá una serie de instancias, que no son más que ocurrencias concretas de ese tipo de entidad.

En resumen: una entidad representa cualquier persona, suceso, evento o concepto (cualquier "cosa") sobre el que se desea almacenar información.

En el modelo E/R una entidad se representa con un rectángulo en cuyo interior aparece el nombre de la entidad.

Entidad asignatura.png

Es importante tener en cuenta que el diseño E/R acabará plasmado en un sistema gestor de bases de datos (SGBD) físico en un ordenador, por lo que es interesante respetar los nombres utilizados en el diseño, y por esa razón es conveniente no utilizar tildes en los nombres, ya que hay SGBD que no aceptan este tipo de caracteres.

Existen tipos de entidades, pero no se va a entrar en ese detalle en este curso, para el que desee profundizar en el contenido del curso, existen apuntes de la UOC (Universitat Oberta de Cataluña) con licencia Creative Commons sobre el modelo conceptual en este enlace.

Relaciones

Se entiende por relación aquella asociación o correspondencia existente entre entidades.

Se representa mediante un rombo con el nombre de la relación en el interior.

En el siguiente ejemplo, se representa la relación "trabaja" que se establece entre un empleado y una sucursal bancaria, de forma que represente que un empleado trabaja en una sucursal bancaria, y que la sucursal bancaria es el lugar de trabajo del empleado.

 Relacion.png

En las líneas que unen las entidades con las relaciones se puede escribir el rol o papel que desempeña una entidad en la relación en caso de que dicho papel no quede claro.

Para definir una relación se tienen en cuenta los siguientes elementos:

Ejemplos de cardinalidades:

Cardinalidades de las entidades

Las cardinalidades de las entidades se definen como el número mínimo y máximo de instancias de una entidad que pueden estar relacionadas con una instancia de otra u otras entidades que participan en la relación. Su representación gráfica es una etiqueta del tipo (0,1), (1,1), (0,n) o (1,n), según corresponda.

Por ejemplo, el siguiente diagrama representa el hecho de que un departamento de una empresa puede tener varios empleados trabajando en él (lo indica la cardinalidad máxima n) o ningún empleado trabajando en él (lo indica la cardinalidad mínima 0) y un empleado debe trabajar como mínimo y como máximo en un solo departamento.

Cardinalidades.png

Cardinalidades de las relaciones

En el caso de las relaciones, la cardinalidad indica el número de instancias de una entidad que se relacionan con un ejemplar de la otra entidad que forma parte de la relación, y viceversa.

La cardinalidad de las relaciones se obtiene de considerar el máximo número de instancias con las que puede participar cada una de las entidades en la relación, es decir con el máximo de las cardinalidades de cada una de las entidades que participan en la relación.

Dependiendo del número de instancias que aparezcan, podemos tener:

Cardinalidad 11.png

Cardinalidad 1N.png

Cardinalidad NM.png

Aunque en este momento pueda parecer que los conceptos cardinalidad de una relación y cardinalidad de una entidad son muy similares, ambos son necesarios para la transformación del diagrama E/R al modelo relacional, como se verá más adelante.

Grado de una relación

El grado de una relación es el número de entidades que participan en la relación.

Se pueden encontrar los siguientes tipos de relaciones según su grado:

Relacion reflexiva.png

Cardinalidad 1N.png

Ternaria.png

Este diagrama representa que una película se relaciona con un actor que ha interpretado un determinado personaje de los que forman parte del guión. O que un personaje se relaciona con la película de la que forma parte y con el actor que lo interpreta. O que un actor se relaciona con el personaje que interpreta y con la película en la que interviene... distintas formas de decir lo mismo.

N-aria.png

Imaginemos una relación de orden 4, como la de la imagen, ¿cómo podemos disminuir su orden?

Las relaciones que expresa el diagrama son: un actor se relaciona con una película en la que interviene, que es producida por un estudio, y lo hace a cambio de un determinado salario de la tabla salarial que tienen establecida en ese estudio, y todas esas relaciones son en realidad contractuales, es decir, derivadas de contratos.

n-aria 2.png

Sustituyendo la relación 'tiene_contrato' por una entidad nueva llamada CONTRATO y convirtiendo todas las relaciones en binarias se elimina la relación de grado 4.

Ahora, cada entidad de PELÍCULA, SALARIO, ESTUDIO y ACTOR se relaciona con las demás entidades sóla a través de la entidad CONTRATO.

Atributos

Un atributo es cualquier característica que sirve para calificar, identificar, clasificar, cuantificar o expresar el estado de algo. Por ejemplo, las propiedades, cualidades, identificadores o características de entidades o relaciones

También hay que tener en cuenta si los atributos son simples o compuestos, o si son obligatorios u opcionales.

Los atributos de una entidad se representan mediante elipses o círculos etiquetados, que se conectan por una línea recta a la entidad o relación que califican, cada uno de los cuales tiene que tener un nombre único y que haga referencia a su contenido. Los nombres de los atributos deben ir en minúsculas.

 Atributos.png

Cada atributo tiene un conjunto de valores asociados denominado dominio. El dominio define todos los valores posibles que puede tomar un atributo.

Tipos de atributos

Los atributos pueden ser obligatorios u opcionales.

Un atributo obligatorio es aquél que siempre debe estar definido, como por ejemplo, el que identifica a una entidad. En una entidad EMPLEADO, un atributo obligatorio de esa entidad podría ser 'DNI', que no se puede dejar vacío porque gracias a él se identifican todas y cada una de las instancias de esa entidad.

Un atributo opcional, en cambio, puede quedar sin definir para algunas de las instancias de la entidad. En el caso de la entidad EMPLEADO un atributo opcional podría ser 'edad', que es un atributo que no es imprescindible para la identificación de las instancias de la entidad.

Otra clasificación de los atributos es: simples o compuestos.

Un atributo simple es un atributo que tiene un solo componente, que no se puede dividir en partes más pequeñas que tengan un significado propio, un ejemplo podría ser el DNI de una persona.

Un atributo compuesto es un atributo con varios componentes, cada uno con un significado por sí mismo. Por ejemplo, considerando la dirección de una persona como la unión de la calle donde vive, el número y la población.

En la siguiente figura se observa la forma de representar los atributos simples y los compuestos, Dirección es un atributo compuesto, que consta de varios componentes simples (calle, numero, poblacion).

Tipos atributos.png

Las relaciones también pueden tener atributos asociados. Se representan igual que los atributos de las entidades.

Imaginar que es necesario guardar la fecha de emisión de una factura a un cliente, y que es posible emitir duplicados de la factura (con distinta fecha). En tal caso, el atributo "Fecha de emisión" de la factura debería colocarse en la relación "se emite".

Atributo relacion.png

Clave primaria

Es muy importante poder distinguir cada instancia de una entidad o de una relación. Para esto tenemos la clave primaria.

Cada instancia de una entidad se puede distinguir de cualquier otra por todos sus atributos, y la mayoría de las veces no son necesarios todos, sino un subconjunto de ellos. Pero puede ocurrir que un subconjunto sea igual para varias entidades, por lo que no nos vale cualquier subconjunto. Lo importante es que el conjunto de todos los atributos que se seleccionan no se repita con los mismo valores para distintas instancias. Teniendo en cuenta esto se definen diferentes conceptos:

A continuación hay un diagrama en el que se representa el caso de la entidad Empleado y su clave primaria.

image-1661434932607.png

Restricciones avanzadas del modelo Entidad-Relación

En este curso no se va a entrar en estos contenidos por ser avanzados, pero podéis encontrar apuntes de la UOC con licencia Creative Commons en esta web.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Creación de un diagrama Entidad-Relación

Se va a realizar el diagrama E/R que representa la información de una Universidad sobre los grados y sus asignaturas que se pueden estudiar en ella y se va a incluir, además, la información de los alumnos matriculados en las asignaturas junto con las calificaciones que obtienen en ellas. Para este caso se va a suponer que una asignatura solo puede pertenecer a una grado.

Lo primero es buscar las entidades, que son Asignatura, Grado y Alumno.

Después las relaciones entre las entidades. Asignatura se relaciona con Grado a través de la relación “pertenece”, y Alumno se relaciona con Asignatura a través de “esta_matriculado”.

Creacion diagrama 1.png


Ahora se ponen los atributos de las entidades y las relaciones (si los tuvieran). El enunciado del problema es bastante escueto y no nombra qué información se desea guardar. Normalmente los enunciados deben ser completos para no dejar nada a la imaginación del diseñador y que todo quede lo más aproximado posible al problema real.

En este caso no dicen nada, así que lo primero que debemos pensar es que las entidades deben estar identificadas y guardar la información más común de estas entidades. Por ejemplo, de Grado podemos guardar el nombre y un código interno dentro de la universidad que lo distingue en la base de datos. De las asignaturas, el nombre, código de la asignatura (que será la clave primaria), duración y horas semanales. De los alumnos, DNI (que será la clave primaria), nombre, apellidos, fecha de nacimiento e email.

Con todo esto el diagrama quedaría así (a falta de estudiar las cardinalidades).

Creacion ER final.png

Hay que fijarse que el atributo nota está en la relación porque es la nota que el alumno obtiene en una asignatura en concreto y para cada asignatura tendrá una nota distinta, por lo tanto, no puede ser un atributo de la entidad.

Ahora falta añadir las cardinalidades.

Empezamos con la relación “esta_matriculado”. Un alumno puede estar matriculado en 1 o varias asignaturas, así que en el lado de la relación más próximo a la entidad Asignatura, se pone la cardinalidad (1,n). Una asignatura puede tener a ninguno o a varios alumnos matriculados, así que en el lado de la relación más próximo a la entidad Alumno se escribe la cardinalidad (0,n) y de estas dos cardinalidades, se deriva la cardinalidad de la relación, N:M.

La relación “pertenece”. Una asignatura pertenece a un y solo un grado, con lo que la cardinalidad de la relación más próxima a la entidad grado, será (1,1). Y un grado se compone de mínimo 1 y máximo varias asignaturas, así que en el lado más próximo a la entidad Asignatura, se pone la cardinalidad (1,n). De estas cardinalidades, la cardinalidad de la relación es 1:N.

El diagrama final del problema es el siguiente:

Diagrama finall.png

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Crear diagrama ER con DIA

Vamos a crear el diagrama de la universidad que se ha explicado en la página Creación de un diagrama Entidad-Relación, utilizando el programa Dia.

Registrarse en rollApp

Por pasos, primero hay que registrarse en rollApp:

rolApp signup.png


Una vez finalizado el proceso de registro, al acceder se ve una página en donde se muestran unas sugerencias de aplicaciones y se puede buscar la que deseamos utilizar. Para buscar la que queremos hay que pinchar en Apps del menú principal y luego buscar en el buscador de la derecha, como se muestra en la imagen:

rollApp Apps.png

Al introducir en el buscador la aplicacion "Dia", nos aparecerán las sugerencias del buscador y hay que seleccionar la aplicación Dia, como muestra la imagen siguiente:

rollApp select Dia.png

Abrimos esa aplicación y podemos empezara a utilizarla seleccionando "Launch online":

rollApp Dia LaunchOnline.png


Esto abrirá la aplicación en una nueva ventana:

Dia.png

Una vez abierta la aplicación hay que seleccionar el diagrama que vamos a utilizar del desplegable de diagramas disponibles: ER

Dia ER.png

Ahora los elementos que aparecen son los del diagrama ER

Dia ER Elementos.png

Entidad

Para crear una entidad se selecciona el primer elemento, el rectángulo con la E dentro de él, y se pincha sobre la parte del lienzo en la que se desea crear la entidad. Esto crea un cuadro vacío en el que tendremos que poner el nombre de la entidad e ir añadiéndole atributos y relaciones.

Dia Entidad.png

Si solo queremos cambiar el nombre de la entidad, basta con pulsar F2 teniendo la entidad seleccionada y nos dejará editar el nombre. Si lo que se desea es abrir todas las propiedades de la entidad, hay que hacer doble clic sobre ella y se abre la ventana de las propiedades:

Dia propiedades entidad.png

Atributos

Para añadir atributos, hay que seleccionar el elemento que es un círculo con una A dentro de él y pinchar en la parte del lienzo en la que se desea crear el atributo. Esto crea una elipse a la que hay que cambiar el nombre y ponerle el nombre del atributo correspondiente. Las propiedades se abren igual que la entidad.

Dia propiedades atributo.png

Para indicar que un atributo es clave primaria, bastaría con clicar sobre el botón con etiqueta "Clave".

Para unir los atributos a su entidad, hay que utilizar el elemento que son como dos líneas paralelas. Clicar en el atributo y arrastrar hasta la entidad y entonces soltar. También se puede utilizar una linea normal del los elementos generales, que queda más bonito.

Así tendríamos ya:

Dia ER Entidad-atributos.png

Relaciones

Para añadir relaciones hay que crearlas y luego unirlas, igual que se hace con los atributos.

Una relación se añade con el elemento que es un rombo con una R en él. Se selecciona y se clica sobre la parte del lienzo en la que se desea poner la relación. Y se une a las entidades igual que los atributos. Así, entre Asignatura y Grado, tendremos:

DIa relacion dos entidades.png

Cardinalidades

Ahora hay que añadir las cardinalidades. Las de las entidades se añaden desde el cuadro de propiedades de la relación.

Dia Propiedades relacioni.png

Ahora ya tenemos dos entidades con sus atributos y su relación, pero falta la cardinalidad de la relación que, en el caso de la App Dia hay que ponerlo como una etiqueta de texto del cuadro general de elementos:

Dia etiqueta texto.png

Con todo esto ya tendríamos toda la relación completa:

Dia relacioin completa.png

Siguiendo los mismo pasos se van añadiendo el resto de entidades y relaciones del diagrama.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Conceptos fundamentales del modelo relacional

El modelo relacional se basa en el concepto matemático de relación, que se representa gráficamente mediante una tabla. Codd utilizó terminología matemática para definir el modelo relacional, en concreto la de la teoría de conjuntos y de la lógica de predicados.

El concepto de relación

La relación es el elemento básico del modelo relacional y está compuesta por dos partes:

El número de columnas que tiene una relación recibe el nombre de grado de la relación, y el número de filas recibe el nombre de cardinalidad de la relación.

Como ejemplo, la siguiente tabla representa la relación PERSONA.

NOMBRE

APELLIDOS

EDAD

TELÉFONO

Alfonso

Gutiérrez Pérez

38

698 569 854

Lucía

López García

37

666 999 888

Jorge

Juan Bonilla

38

632 458 785

Ana

García García

29

654 987 321

Diego

Rodríguez Gracia

36

632 985 632

Marta

Pérez Martínez

34

678 521 456

Alberto

Vega Domínguez

31

698 584 521

Manuela

Fernández Hernández

35

636 696 898

Silvia

Gracia Barrós

36

654 654 654

La cabecera de esta relación es: PERSONA (NOMBRE, APELLIDOS, EDAD, TELEFONO)

El cuerpo es el conjunto de 9 filas con los datos concretos de personas, el grado de la relación es 4 y la cardinalidad 9.

Las tablas del modelo relacional cumplen las siguientes propiedades:

Clave primaria y claves ajenas

Sea va a recordar lo que era una clave primaria y se va a añadir un concepto nuevo, el de clave ajena.

En el modelo relacional tenemos los siguientes tipos de claves:

Un ejemplo a continuación:

Oficina

NUM_OFICINA

CALLE

AREA

POBLACION

TELEFONO

FAX

001

Rúa Seco, 19

Sur

Olite

948 222222

948 658745

002

Larraga, 21

Norte

Olite

948 121212

948 123465

003

Tudela, 15

Sur

Pamplona

948 323232

948 236589

004

Italia, 12

Centro

Zaragoza

976 658745

976 548721

005

de la Parra, 16

Centro

Teruel

978 225588

978 159732

El atributo NUM_OFICINA es una clave candidata ya que identifica de manera única cada registro de la tabla, y en este caso además es la clave primaria porque no existe en la tabla ninguna otra clave candidata.


Empleado

NUM_EMPLEADO

DNI

OFICINA

TELEF_FIJO

TELEF_MOVIL

FAX

12340

25369874

005

978 225588

655 191919

978 159732

12350

72658412

002

948 121212

655 212019

948 123465

12360

72658965

003

948 323232

655 242563

948 236589

12370

25814796

001

976 456985

655 256985

948 658745

12380

25369854

004

976 658745

655 658965

976 548721

En esta tabla hay dos claves candidatas, el atributo NUM_EMPLEADO y el atributo DNI, ya que ambos identifican de manera única a cada registro de la tabla. Si se considera el atributo DNI como clave primaria, el atributo NUM_EMPLEADO pasa a ser una clave alternativa de la tabla.

Si la relación OFICINA tuviera la siguiente estructura:

Oficina

NUM_OFICINA

CALLE

AREA

POBLACION

TELEFONO

DIRECTOR

001

Rúa Seco, 19

Sur

Olite

948 222222

25369874

002

Larraga, 21

Norte

Olite

948 121212

72658412

003

Tudela, 15

Sur

Pamplona

948 323232

72658965

004

Italia, 12

Centro

Zaragoza

976 658745

72658412

005

de la Parra, 16

Centro

Teruel

978 225588

72658965

Se puede ver que el atributo DIRECTOR hace referencia al atributo DNI de la tabla EMPLEADO, que además es la clave primaria de dicha tabla, por lo que DIRECTOR es la clave ajena de la tabla OFICINA y referencia la tabla EMPLEADO.

Las claves primarias y ajenas cumplen una serie de propiedades:

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Transformación del modelo Entidad-Relación al modelo relacional

Principios de transformación

La transformación de un diagrama E/R al modelo relacional está basado en los siguientes principios:

Transformación de las entidades y sus atributos

Entidades: cada entidad que aparece en el diagrama E/R se convierte en una tabla.

Atributos de las entidades: Cada atributo de una entidad se transforma en una columna de la tabla a la que ha dado lugar la entidad.

Ahora vamos a ver cómo se definen cada uno de los tipos de atributos:

Siguiendo con el ejemplo del diagrama E/R de la universidad, se tendrían las siguientes tablas con sus atributos. Las claves primarias están marcadas en negrita y subrayadas.

Paso al relacional 1.png 

Transformación de las relaciones y sus atributos

Transformación de las relaciones entre entidades: dependiendo del tipo de relación y de la cardinalidad que tenga, existen diversas maneras de transformarlas:

Transformación de los atributos de relaciones

Si la relación se transforma en una tabla, todos sus atributos pasan a ser columnas de la tabla. En el caso en que alguno de los atributos de la relación sea clave primaria, deberá ser incluido como parte de la clave primaria en dicha tabla.

En el ejemplo de la Universidad, tenemos una relación 1:N y otra N:M. De la relación 1:N tendremos una propagación de clave, es decir, la clave primaria de la tabla con cardinalidad máxima 1 (Grado), pasa como atributo a la otra tabla (Asignatura) y además como clave ajena que referencia a la clave primaria de Grado. De la relación N:M se obtiene una nueva tabla con los atributos que tiene la relación (Nota) y la clave primaria la forma la unión de las claves primarias de las entidades que intervienen en la relación (Codigo de la asignatura y DNI del Alumno).

Paso al relacional 2.png 

Para realizar estos diagramas, os recomiendo la herramienta ERD Plus, que solo requiere registro en la misma y además permite luego exportar el código SQL de los diagramas relacionales, lo que es muy útil para luego generar la base de datos en un sistema físico.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Crear diagrama relacional con ERD Plus

Vamos a ver cómo se crearía un diagrama relacional con la herramienta ERD Plus.

Imaginad que tenemos el diagrama ER siguiente sobre una base de datos de recetas:

Recetas ER.png


Si diagrama relacional correspondiente es el siguiente:

Recetas relacional.png


Voy a indicar cómo se crea cada uno de los elementos del diagrama.

Tablas

Hay que clicar sobre el botón "table":

Boton table.png

 A continuación clicar sobre cualquier punto del lienzo de dibujo y se creará una tabla vacía:

Tabla vacia.png

Seleccionando la tabla, a la derecha aparecen todas las opciones de la tabla:

Propiedades tabla2.png

Vamos a crear la tabla Receta.

Tiene 5 columnas, pero una es una clave ajena, así que esa se añade de otra manera que se explica más abajo.

Para añadir las columnas, hay que clicar sobre el botón "ADD" y se abre debajo la ventana con las columnas:

columnas receta.png

Se van rellenando los nombres de las columnas y el tipo de dato como en la imagen de arriba.

Ahora, para indicar la clave primaria, se clica en "PRIMARY KEY" y se abre una ventana con todas las columnas para seleccionar cuáles forman parte de la clave primaria:

clave primaria recetas.png

También hay que indicar que la columna notas es opcional (no obligatoria). Para eso clicar sobre "OPTIONAL" y hacer lo mismo que al seleccionar la clave primaria:

opcionales receta.png


Falta solo añadir la clave ajena. Para eso es necesario tener previamente creadas las dos tablas que intervienen en la clave ajena, en este caso la tabla "TIPO_RECETA" y la tabla "RECETA".

Se selecciona el botón "CONNECT" del menú principal y hay que clicar en la tabla cuya clave primaria va a ser clave ajena (TIPO_RECETA) y arrastrar hasta la tabla en la que va a añadirse la columna como clave ajena (RECETA):

Clave ajena receta.png

Y la columna se añade sola a la tabla RECETA.

Siguiendo estos mismos pasos para el resto de tablas, se crea el diagrama completo.

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png