Informática
Bases de datos

Tu Instituto Online
   


 
Nivel Básico Entidad-Relación: Análisis y diseño de bases de datos. Fases
Duración aproximada: 3 sesiones.
   
Objetivos Objetivos
  • Aprender a analizar los elementos a almacenar en una base de datos.
   
Fuentes de información Fuentes de información
   
Contenidos
Contenidos
 

1. Análisis y diseño. Fases

Una vez tenemos claro los elementos y la forma de trabajar con el modelo entidad-relación de Chen, podemos empezar a analizar y diseñar lo que será el boceto de nuestra base de datos. En este boceto se utilizarán las entidades, las relaciones y los atributos con el fin de diferenciar los componentes que, posteriormente, serán implementados en una base de datos.

El análisis y diseño del modelo entidad-relación se lleva a cabo mediante una serie de pasos que nos permitirán facilitar la labor de identificación de los diferentes elementos. Las etapas o fases son las siguientes:

  • Identificar entidades
  • Identificar atributos y dominios
  • Identificar claves principales
  • Identificar relaciones y su grado
  • Representación del modelo entidad-relación
  • Verificaciones

1.1. Identificar entidades

Para identificar a las entidades, debemos examinar las especificaciones de requisitos de usuario y buscar los nombres o sustantivos (por lo general actúan como sujero o complemento directo) que se mencionan. Otra forma de identificarlos es pensar en aquellos que existen por sí mismos (por ejemplo, empleado es una entidad porque los empleados existen, sepamos o no sus datos).

Al identificar entidades pensaremos en: objetos reales, documentos, personas, actividades u objetos abstractos. Además, debemos tener cuidado con elegir un nombre adecuado e identificativo con el fin de no tener problemas posteriormente.

1.1.1. Ejemplos

Por ejemplo (en negrita se muestran las entidades):

  • Una empresa vende productos a varios clientes. Se necesita conocer los datos personales de los clientes (nombre, apellidos, dni, dirección, teléfonos, edad, fecha de nacimiento). Cada producto tiene un nombre y un código. Un cliente puede comprar varios productos a la empresa, y un mismo producto puede ser comprado por varios clientes.
  • Los productos son suministrados por diferentes proveedores. Se debe tener en cuenta que un producto sólo puede ser suministrado por un proveedor, y que un proveedor puede suministrar diferentes productos. De cada proveedor se desea conocer el NIF, nombre y dirección.

Como podemos observar, las entidades serán clientes (o cliente), productos (o producto) y proveedores (o proveedor). No importa si el nombre está en singular o plural, ya que lo importante será identificar las entidades.

 

1.2. Identificar atributos y dominios

A partir de la identificación de las entidades, podemos comenzar con la de los atributos. Para ello volvemos a buscar nombres que identifiquen propiedades, cualidades, identificadores o características de entidades, teniendo en cuenta que todos ellos representarán información que se quiere almacenar de las entidades. También se pueden observar las preposiciones entre sustantivos como, por ejemplo, "el precio del artículo", donde el artículo será una entidad y el precio un atributo de dicha entidad.

Un aspecto importante a tener en cuenta es si los atributos son simples o compuestos. Por ejemplo, un valor como "calle Quart, 122, Valencia" puede ser uno solo o una combinación de varios: calle Quart; 122; Valencia. Lo más sencillo es decidir si queremos acceder a los diferentes componentes (atributo compuesto) o no (atributo simple).

Los atributos, también pueden ser almacenados o derivados, para lo que debemos pensar a partir de qué atributos podemos extraer la información derivada. Por ejemplo, si tenemos el atributo fecha_nacimiento, será fácil ver que la edad será un atributo derivado.

El siguiente paso será identificar los dominios de los atributos anteriores, es decir, el conjunto de valores que pueden tener. Para ello debemos pensar en los posibles valores que puede contener el atributo (teniendo en cuenta las longitudes máximas y/o mínimas, así como el tipo de datos). Así, el dominio de la edad de una persona será un número (de una a tres cifras), el de una dirección será una cadena (de 30 caracteres), etc.

1.2.1. Ejemplos

Por ejemplo (en negrita se muestran los atributos):

  • Una empresa vende productos a varios clientes. Se necesita conocer los datos personales de los clientes (nombre, apellidos, dni, dirección, teléfonos, edad, fecha de nacimiento). Cada producto tiene un nombre y un código. Un cliente puede comprar varios productos a la empresa, y un mismo producto puede ser comprado por varios clientes.
  • Los productos son suministrados por diferentes proveedores. Se debe tener en cuenta que un producto sólo puede ser suministrado por un proveedor, y que un proveedor puede suministrar diferentes productos. De cada proveedor se desea conocer el NIF, nombre y dirección.

Además, los dominios podrían ser:

  • Nombre: cadena de 20 caracteres
  • Apellidos: cadena de 30 caracteres
  • Dni: cadena de 9 caracteres
  • Dirección: cadena de 40 caracteres
  • Teléfonos: cadena de 10 caracteres
  • Edad: número de tres dígitos
  • Fecha nacimiento: fecha
  • Nombre: cadena de 10 caracteres
  • Código: cadena de 5 caracteres
  • NIF: cadena de 8 caracteres
  • Nombre: cadena de 10 caracteres
  • Dirección: cadena de 40 caracteres

 

1.3. Identificar claves principales

Una vez tenemos todas las entidades con sus respectivos atributos, debemos seleccionar los atributos clave que identifiquen unívocamente todas las ocurrencias de esa entidad. En caso de haber varios, debemos seleccionar uno de ellos y subrayarlo tal y como comentamos en la práctica anterior.

1.3.1. Ejemplos

Ejemplos de claves principales podrían ser: DNI (entidad persona), Expediente (entidad alumno), CIF (entidad empresa), etc.

Si observamos el ejemplo sobre el que estamos trabajando (en negrita indicamos los atributos clave):

  • Una empresa vende productos a varios clientes. Se necesita conocer los datos personales de los clientes (nombre, apellidos, dni, dirección, teléfonos, edad, fecha de nacimiento). Cada producto tiene un nombre y un código. Un cliente puede comprar varios productos a la empresa, y un mismo producto puede ser comprado por varios clientes.
  • Los productos son suministrados por diferentes proveedores. Se debe tener en cuenta que un producto sólo puede ser suministrado por un proveedor, y que un proveedor puede suministrar diferentes productos. De cada proveedor se desea conocer el NIF, nombre y dirección.

 

1.4. Identificar relaciones y su grado

El siguiente paso será identificar las relaciones existentes entre ellas. Del mismo modo que para las entidades se buscaban nombres en las especificaciones, para las relaciones debemos buscar expresiones verbales (por ejemplo: oficina tiene empleados, empleado gestiona inmueble, alumno asiste a clases, etc.). Si las especificaciones de requisitos reflejan estas relaciones es porque son importantes para la empresa y, por lo tanto, se deben reflejar en el esquema conceptual.

En el modelado de las relaciones debemos tener cuidado, ya que sólo interesarán las relaciones necesarias. En el ejemplo anterior, se han identificado las relaciones empleado gestiona inmueble y cliente visita inmueble. Se podría pensar en incluir una relación entre empleado y cliente: empleado atiende a cliente, pero observando las especificaciones de requisitos no parece que haya interés en modelar tal relación.

Aunque la mayoría de las relaciones son binarias (participan dos entidades), es posible encontrar relaciones en las que participen más de dos, así como relaciones recursivas. Además, hay que determinar las cardinalidades con las que participa cada entidad en cada una de ellas. Éstas son un tipo de restricción que se utiliza para comprobar y mantener la calidad de los datos.

1.4.1. Ejemplos

Ejemplos de relaciones podrían ser: un proveedor suministra varios artículos y cada artículo lo pueden suministrar varios proveedores, en un banco existen varias sucursales y cada sucursal solo puede ser de un banco.

Si observamos el ejemplo sobre el que estamos trabajando (en negrita indicamos las relaciones):

  • Una empresa vende productos a varios clientes. Se necesita conocer los datos personales de los clientes (nombre, apellidos, dni, dirección, teléfonos, edad, fecha de nacimiento). Cada producto tiene un nombre y un código. Un cliente puede comprar varios productos a la empresa, y un mismo producto puede ser comprado por varios clientes.
  • Los productos son suministrados por diferentes proveedores. Se debe tener en cuenta que un producto sólo puede ser suministrado por un proveedor, y que un proveedor puede suministrar diferentes productos. De cada proveedor se desea conocer el NIF, nombre y dirección.

Además, tenemos que fijar las cardinalidades máximas de cada una de las relaciones:

  • En el caso de la relación comprar podríamos ver que cada cliente puede comprar varios productos (N) y cada producto puede ser comprado por varios clientes (M). Por tanto la cardinalidad será N:M.
  • En caso de la relación suministrar podríamos ver que cada producto puede ser suministrado por varios proveedores (N) y cada producto solo puede ser suministrado por un proveedor (1). Por tanto la cardinalidad será 1:N.

 

1.5. Representación del modelo entidad-relación

Utilizando la simbología vista, representaremos gráficamente todas las entidades, relaciones, atributos y cardinalidades. En el ejemplo hemos ido representando, parcialmente y paso a paso, los elementos nuevos que iban surgiendo en cada uno de ellos.

Recordamos, en la imagen inferior, la simbología que se ha utilizado para cada uno de los elementos:

 

2. Ejemplos de diseño

2.1. Gabinete de abogados

Se quiere diseñar una base de datos relacional para almacenar información sobre los asuntos que lleva un gabinete de abogados. Cada asunto tiene un número de expediente que lo identifica, y corresponde a un solo cliente. Del asunto se debe almacenar el período (fecha de inicio y fecha de archivo o finalización), su estado (en trámite, archivado, etc.), así como los datos personales del cliente al que pertenece (DNI, nombre, dirección, fecha nacimiento). Algunos asuntos son llevados por uno o varios procuradores, de los que nos interesa también los datos personales (DNI, número de colegiado, nombre, apellidos, dirección, número de casos ganados).

  • ENTIDADES: asunto, cliente, procurador
  • ATRIBUTOS:
    • Asunto: num expediente, período (compuesto por fecha inicio y fecha fin), estado
    • Cliente: dni, nombre, dirección, fecha nacimiento
    • Procurador: dni, nombre, apellidos, número colegiado, casos ganados
  • RELACIONES: corresponder (cardinalidad 1:N), llevar (cardinalidad N:M)
  • ATRIBUTOS CLAVES: num expediente (ASUNTO), dni (CLIENTE), dni (PROCURADOR)
  • DOMINIOS:
    • num expediente: número 4 dígitos
    • fecha inicio: fecha
    • fecha fin: fecha
    • estado: cadena de 10 caracteres
    • dni: cadena de 9 caracteres
    • nombre: cadena de 20 caracteres
    • apellidos: cadena de 20 caracteres
    • dirección: cadena de 30 caracteres
    • fecha nacimiento: fecha
    • número colegiado: número de 5 dígitos
    • casos ganados: número de 5 dígitos

 

2.2. Videoclub

Se desea diseñar una base de datos relacional que almacene la información sobre los préstamos de las películas de un videoclub. En la actualidad, la gestión de esta información se lleva cabo del siguiente modo:


Cada socio tiene una ficha con una serie de datos asociados: el número, el nombre del socio, su dirección y teléfono, y los nombres de sus directores favoritos. Además, cada socio puede sacar prestadas películas de las que interesa saber el título, el género (comedia, terror, etc.), su director, el año y los actores que intervienen. Un socio puede tomar prestadas varias películas y cada película puede ser prestada a varios socios.

Cada película está guardada en un archivador y cada archivador tiene varias películas. De los archivadores se desea conocer: el número de serie, la ubicación, el número de estanterías, el total de películas y la fecha de compra.

  • ENTIDADES: socio, películas, archivador
  • ATRIBUTOS:
    • Socio: número, nombre, dirección, teléfono, director favorito (multivaluado)
    • Películas: título, género, director, actor (multivaluado), año
    • Archivador: estanterías, total películas (derivado de las películas), fecha compra, num serie, ubicación
  • RELACIONES: sacar (cardinalidad N:M), guardar (cardinalidad 1:N)
  • ATRIBUTOS CLAVES: número (SOCIO), título, director, año (PELÍCULAS), num serie (ARCHIVADOR)
  • DOMINIOS:
    • número: número de 4 dígitos
    • nombre: cadena de 30 caracteres
    • dirección: cadena de 30 caracteres
    • teléfono: cadena de 10 caracteres
    • director favorito: cadena de 30 caracteres
    • título: cadena de 30 caracteres
    • género: cadena de 10 caracteres
    • director: cadena de 30 caracteres
    • actor: cadena de 30 caracteres
    • año: número de 4 dígitos
    • estanterías: número de 2 dígitos
    • total películas: número de 2 dígitos
    • fecha compra: fecha
    • num serie: cadena de 10 dígitos
    • ubicación: cadena de 10 dígitos

  
Ejercicios
Ejercicio
 

Enunciado. Carreteras

Se quiere almacenar información sobre todas las carreteras del país, sabiendo que se deben cumplir las especificaciones que se comentan. De las carreteras se quiere almacenar: nombre, id, distancia, categoría (locales, comerciales, regionales, nacionales, autovías, etc) y velocidad máxima.

También se quiere almacenar información de los tramos: id, kilómetro inicial, kilómetro final, velocidad, estado (bueno, malo, regular). Además cada carretera está formada por varios tramos y cada tramo sólo pertenece a una carretera.

Un tramo puede pasar por varias comunidades, de las cuales interesa saber: el nombre, el código, los km2, el número de habitantes y el salario medio. Cada comunidad puede tener varios tramos que pasen por ella.

Cuestionario

  • Descarga el cuestionario de preguntas. DESCARGAR
  • Renombra el archivo descargado como "diseño".
  • Ve al apartado "BBDD. AyD. Carreteras".
  • Contesta sólo a las cuestiones de este apartado.
  • Guarda los cambios.

Diagrama

  • Crea un diagrama en LibreOffice Draw.
  • Guarda el diagrama como "dibcarreteras".
  • Representa los diagramas resultantes del análisis y diseño obtenido.
  • Guarda los cambios.
   
Ejercicios
Ejercicio
 

Enunciado. Historia bélica

Se quiere almacenar información sobre las guerras de la historia. Para ello, para cada guerra, se almacenará el año en el que empezó la guerra y el año en que terminó, así como su nombre y el de los paises contendientes, pudiendo indicar además quiénes fueron las ganadores. Hay que tener en cuenta que los países se pueden unir a la guerra a uno u otro bando (suponemos que solo hay dos bandos) después de comenzada la guerra (como EEUU en la 2ª guerra mundial).

De cada bando se dese almacenar el id, el ganador y el nombre, y en cada uno pueden participar varios países. Además, de los países que pueden participar en varios bandos, se desea almacenar el id, el nombre, la extensión, el pib y la deuda.

Cuestionario

  • Ve al apartado "BBDD. AyD. Historia bélica".
  • Contesta sólo a las cuestiones de este apartado.
  • Guarda los cambios.

Diagrama

  • Crea un diagrama en LibreOffice Draw.
  • Guarda el diagrama como "dibhistbel".
  • Representa los diagramas resultantes del análisis y diseño obtenido.
  • Guarda los cambios.

Subir el cuestionario

  • Sube el fichero "diseño" a la plataforma.

Subir los diagramas

  • Sube el fichero "dibcarreteras" a la plataforma.
  • Sube el fichero "dibhistbel" a la plataforma.
   
   
Creditos Créditos
Licencia de Creative Commons

Este documento es de dominio público bajo licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. v. 2.0.2.1.0

No se permite un uso comercial de la obra original ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.

Los reconocimientos se realizan en el apartado Fuentes de información.

Los iconos empleados están protegidos por la licencia LGPL y se han obtenido de:
https://commons.wikimedia.org/wiki/Crystal_Clear
https://www.openclipart.org


Licencia de Creative Commons

Todas las capturas de pantalla tienen copyright y pertenecen a TuInsitutoOnline.com.

TuInstitutoOnline.com permite su uso siempre y cuando se muestren desde el dominio www.tuinstituoonline.com y NO PERMITE enlazar a ellas desde otros lugares.

Además, la estructura diseñada para mostrar el contenido de las unidades es propiedad de TuInstitutoOnline.com.

TuInstitutoOnline.com M.Donoso, G.García, P.Gargallo, A.Martínez. Versión 2021.