Informática
Bases de datos

Tu Instituto Online
   


 
Nivel Básico Análisis y diseño de bases de datos
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.- Introducción

Una vez tenemos claro los elementos y la forma de trabajar con el modelo entidad-relación de Chen podremos 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. Tanto el análisis como el diseño vamos a explicarlo en la presente unidad.

2.- Fases

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

2.1.- Identificar entidades

Para identificar a las entidades deberemos 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 (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 deberemos tener cuidado con elegir un nombre adecuado e identificativo con el fin de no tener problemas posteriormente.

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.

2.2.- Identificar atributos y dominios

A partir de la identificación de las entidades podemos comenzar con la de los atributos. Para ello volveremos 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 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 deberemos 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 anteriores, es decir, el conjunto de valores que pueden tener. Para ello deberemos 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), de una dirección será una cadena (de 30 caracteres)...

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

2.3.- Identificar claves principales

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

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

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.

 

2.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 especificaiones, para las relaciones deberemos buscar expresiones verbales (ejemplos: oficina tiene empleados, empleado gestiona inmueble, alumno asiste a clases). 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 deberemos 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.

Ejemplos de relaciones podrían ser: un proveedor suministra varios artículos y cada artículo lo pueden suministrar varios proveedores, en un banco eixsten 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 tendremos 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.

2.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, 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:

3.- Ejemplos de diseño

3.1.- Gabinete 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

 

3.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 vídeo club. 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...), 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
   
 

Hemos visto varios ejemplos de diseño de bases de datos. Crea un documento llamado diseño.odt y aplica las fases del análisis y diseño de una base de datos. En el documento indica tanto los resultados obtenidos como los diagramas resultantes:

  • 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.
   
Ejercicios
Ejercicio
   
 

Abre el documento del ejercicio anterior y aplica las fases del análisis y diseño de base de datos. En el documento indica, tanto los resultados obtenidos como los diagramas resultantes:

  • 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 quienes fueron las ganadores. Hay que tener en cuenta que los paises 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.

Una vez terminado, guarda el documento y súbelo 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.