1 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el desarrollo de un sistema de información para una galería de arte. Tras analizar el problema, hemos obtenido la siguiente lista de requisitos: • El siste sistema ma ofrec ofrecerá erá inform informaci ación ón acer acerca ca de las las disti distinta ntass expos exposici icion ones es que estén estén progr programa amada dass (título, descripción, fecha de inauguración y fecha de clausura). • En cada exposición se expondrán obras de distintos artistas. Cada obra vendrá identificada por un número de registro. El sistema informará acerca del título, artista, estilo y precio de salida de cada una de las obras de arte expuestas en las exposiciones. • Cada obra tiene un propietario, que suele ser el artista que la creó, aunque esto no es necesariamente así. • Las obras expuestas se pueden comprar haciéndole ofertas a sus propietarios. Al término de la exposición, el propietario de una obra puede vender la obra a la persona que haya realizado la mejor oferta. NOTA: Es esencial que en la base de datos no se almacenen datos de forma redundante, para lo cual hemos de tener en cuenta que una misma persona puede ser propietaria de una obra de arte y realizar ofertas para comprar otras obras de arte. De hecho, incluso puede ser responsable de la creación de alguna de las obras expuestas. Diseñe una base de datos relacional para el problema planteado: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando indicando las claves primarias de todas y cada una de las tablas de nuestra base de datos.
2 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una biblioteca digital. Para realizar nuestra tarea, hemos de comenzar diseñando la base de datos que dará soporte a las distintas aplicaciones que poesteriormente se irán implementando. En principio, la única información de la que disponemos es la siguiente: • Nuestra biblioteca digital ha de almacenar información bibliográfica (título, autor, edición, ISBN...) de distintos títulos. • Cada título de nuestra biblioteca digital se encuentra almacenado en una o varias URLs alternativas. • Además, cada título se encuentra catalogado: un título puede corresponder a una o más categorías diferentes. Dichas categorías, por su parte, se encuentran organizadas de forma jerárquica (una categoría puede tener varias subcategorías, si bien sólo puede estar englobada por una supercategoría). • Los usuarios del sistema han de identificarse para poder utilizar nuestra biblioteca digital, que utilizará las técnicas más avanzadas de protección de datos. • Al estilo de algunas librerías de Internet como Amazon, los usuarios del sistema podrán evaluar y escribir comentarios acerca de los títulos albergados en la biblioteca. La evaluación se hará clasificando los títulos de 1 a 5 estrellas en función de las preferencias del usuario y el conjunto de las evaluaciones realizadas por los distintos usuarios servirá para recomendar unos títulos frente a otros. Diseñar una base de datos relacional que nos permita almacenar toda la información relativa a nuestra biblioteca digital: a) Identificar las entidades de nuestro modelo y los atributos correspondientes a cada una de tales entidades. b) Analizar las relaciones existentes entre las distintas entidades y determinar su cardinalidad (uno a uno, uno a muchos, muchos a muchos). c) Dibujar un diagrama entidad/relación que represente el esquema lógico correspondiente al modelo de datos definido por las entidades y relaciones obtenidas en los apartados anteriores. d) A partir del diagrama, obtener el conjunto de tablas que nos permitirá implementar nuestro modelo en un sistema gestor de bases de datos relacionales.
3 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el desarrollo de una aplicación que se encargue de gestionar la reserva de boletos de avión en una agencia de viajes. Tras analizar el problema con nuestros clientes hemos recopilado la siguiente lista de requisitos: · La agencia de viajes desea mantener información de contacto relativa a cada cliente que ha utilizado los servicios de reserva de boletos a través de la agencia. · Cuando un cliente hace una reserva, compra un boleto para trasladarse de una ciudad a otra. El boleto ha de incluir, aparte del nombre del viajero y las ciudades de origen y destino, su fecha de emisión y su precio total. · Los boletos pueden ser de distintas categorías (business, turista…). · Dado que no siempre hay vuelos directos entre dos ciudades, el trayecto realizado por el cliente puede estar formado por distintos tramos. Cada tramo corresponde a un vuelo concreto entre dos aeropuertos y viene definido por el código de vuelo, la fecha y la hora de salida. En algunas ocasiones, la agencia es capaz de reservar un asiento concreto dentro del avión. · El código de cada vuelo está formado por el código de la compañía aérea y un número. Por ejemplo, el vuelo IB-365 es el vuelo número 365 de la compañía Iberia. · Cada vuelo oferta un número determinado de plazas para cada categoría y cada categoría tiene asociada una tarifa diferente para un mismo vuelo. · Los aeropuertos vienen identificados unívocamente por un código de tres letras (por ejemplo, GRX corresponde al aeropuerto de Granada). · En el caso de los boletos de ida y vuelta, lo único que tenemos que hacer es incluir los tramos que sean necesarios para realizar el recorrido completo. Diseñe una base de datos relacional para el problema planteando siguiendo los siguientes pasos: a) Identifique las entidades de nuestro modelo y los atributos correspondientes a cada una de tales entidades, indicando explícitamente cuáles de esos atributos forman las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determinar su cardinalidad (uno a uno, uno a muchos, muchos a muchos). Cuando resulte necesario, especificar los atributos que puedan corresponder a las relaciones obtenidas. c) Dibuje un diagrama entidad/relación que represente el esquema lógico correspondiente al modelo de datos definido por las entidades y relaciones obtenidas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permitirá implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias de cada una de las tablas.
4 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el desarrollo de una aplicación que se encargue de gestionar los ensayos realizados en un laboratorio de control de calidad y emitir los informes pertinentes. Para realizar nuestra tarea, hemos de comenzar diseñando la base de datos que dará soporte a nuestra aplicación. REQUISITOS: • Nuestro laboratorio se encarga de hacerle controles de calidad a distintos productos. En concreto, la función del laboratorio consiste en realizar el control de calidad de muestras tomadas de un lote concreto del producto analizado. • En control de calidad viene avalado por la realización de uno o varios ensayos (experimentos de laboratorio que se realizan expresamente sobre muestras del producto para certificar la calidad del lote analizado). • Cada ensayo se realiza sobre una muestra del lote analizado del producto, la cual viene identificada por un código asignado por el jefe de laboratorio y, en ocasiones, puede reutilizarse para distintos ensayos. • Cada ensayo toma una serie de medidas de la muestra analizada. Dichas medidas serán las que aparezcan en el informe final de control de calidad. • Cuando los ensayos demuestren que el producto cumple con las exigencias de calidad establecidas por ley, nuestra aplicación se encargará de emitir un certificado que garantice la calidad del producto. Dicho certificado sólo tiene validez para el lote concreto analizado y deberá ir firmado por el director de laboratorio para que tenga validez. • Cada ensayo de los realizados en el laboratorio es de un tipo concreto (especificado por la normativa vigente) y su tipo determina cuáles son las condiciones mínimas exigibles a los resultados obtenidos en el laboratorio para poder emitir el certificado de calidad. Diseñe una base de datos relacional para el problema planteando siguiendo los siguientes pasos: a) Identifique las entidades de nuestro modelo y los atributos correspondientes a cada una de tales entidades, indicando explícitamente cuáles de esos atributos forman las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determinar su cardinalidad (uno a uno, uno a muchos, muchos a muchos). Cuando resulte necesario, especificar los atributos que puedan corresponder a las relaciones obtenidas. c) Dibuje un diagrama entidad/relación que represente el esquema lógico correspondiente al modelo de datos definido por las entidades y relaciones obtenidas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permitirá implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias de cada una de las tablas.
5 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el desarrollo de una aplicación que se encargue de gestionar la flota de autobuses de una empresa de transporte urbano. El objetivo de la aplicación es analizar el funcionamiento de las distintas líneas de autobús urbano para decidir cómo se podrían modificar dichas líneas y prestar un mejor servicio al ciudadano. Para comparar distintas alternativas, no sólo hemos de tener en cuenta los beneficios que las modificaciones podrían suponer, sino también los costos asociados que pueden conllevar. Tras analizar el problema, hemos obtenido la siguiente lista de requisitos: • La compañía tiene una flota de autobuses de distintas características. Según el modelo de autobús, éste tiene mayor o menor capacidad y su consumo de combustible es diferente. • Para cada autobús se ha de mantener un parte de incidencias en el que queden registradas las revisiones y reparaciones a las que ha sido sometido. En el parte han de figurar fecha, costo y descripción, tanto de las revisiones y reparaciones. • Cada línea de autobús consta de una serie de paradas. Las paradas están identificadas por el nombre de la calle donde están situadas y un número (p.ej. Gran Vía 3). • Cada día, los autobuses realizan varias veces los recorridos marcados por las distintas líneas, para las cuales existe un horario oficial (el cual, desgraciadamente, no suele cumplirse). • En los autobuses se instalarán los dispositivos necesarios que permitan contar el número de viajeros que suben y bajan en cada parada, así como controlar el cumplimiento de los horarios. Diseñe una base de datos relacional para el problema planteado: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias de todas y cada una de las tablas de nuestra base de datos.
6 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el desarrollo de una aplicación que se encargue de gestionar reservas de boletos de tren. Tras analizar el problema, hemos obtenido la siguiente lista de requisitos: • RENFE tiene una serie de trenes que hacen rutas fijas todos los días. Los trenes se identifican por el código asociado a su locomotora y tienen una capacidad máxima de pasajeros que viene determinada por el número y tipo de sus vagones. • Las rutas realizadas por los trenes están compuestas por tramos que conectan ciudades. Los tramos se identifican por las ciudades que conectan y la hora de salida de la ciudad origen. Además, para poder automatizar la realización de reservas, también se mantiene información acerca de la duración del trayecto asociado a cada tramo. • Los pasajeros hacen sus reservas para ir de una ciudad a otra a través de un sistema informatizado que les ofrece distintas rutas alternativas. Cada reserva tiene asociado un localizador único, una fecha de emisión, una ciudad de origen y una ciudad de destino. • El trayecto asociado a la reserva de un pasajero está compuesto por un conjunto de tramos, que corresponden a los tramos efectuados diariamente por los ferrocarriles de RENFE. Para cada tramo, el viajero tiene reservado un asiento que viene determinado el número del vagón en el convoy, la fila del asiento en el vagón y una letra que identifica la posición del asiento dentro de la fila. • Obviamente, cuando un viajero efectúa su reserva, puede que todo el trayecto no se realice en el mismo tren. Esto es, el pasajero puede que tenga que hacer transbordos. Ejemplo: Para viajar de D.F. a Cd. Juarez, el viajero hace una reserva de un boleto que incluye un ligar para el TALGO D.F. - Guadalajara y otra plaza para el tren Intercity Guadalajara-Cd. Juarez. Diseñe una base de datos relacional para el problema planteado: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias de todas y cada una de las tablas de nuestra base de datos.
7 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de un sistema de recuperación de información (SRI) mediante el que se pueda acceder a una base de datos documental. Tras analizar detenidamente el problema, enumeramos los requisitos que ha de cumplir el SRI: • Hemos de mantener un registro de documentos, cada uno de los cuales viene identificado por un número de registro. • Todos los documentos tienen título e incluyen una URL mediante la que se puede acceder al documento en sí. • Los documentos aparecen indexados en la base de datos en función de los términos (palabras) que aparecen en ellos. • En la base de datos se ha de mantener la frecuencia de cada término en cada documento. • Para facilitar la actualización del índice, junto con los datos de cada documento, se almacena el tamaño en bytes del documento, la fecha de última actualización del documento en el índice y el valor de una función hash (checksum) que se utilizará para comprobar si el documento actual es el que ya está indexado en la base de datos. • Aparte de poder realizar búsquedas por palabras clave (al estilo de un buscador como Google o Altavista), el sistema de recuperación de información también ha de permitir al usuario navegar por la base de datos documental. Para ello, se han de mantener los documentos clasificados por temas (al estilo de un directorio como Yahoo! o dmoz.org). • Los temas se organizan de la forma tradicional formando una taxonomía (un tema puede tener varios subtemas y ha de estar situado en una posición concreta dentro de la jerarquía de temas). • Además, también se mantienen relaciones entre temas afines para facilitar la navegación del usuario por la base de datos documental (por ejemplo, los algoritmos de generación de números pseudoaleatorios usados en simulación están obviamente relacionados con la Estadística, aunque probablemente no aparezcan dentro del tema “Estadística” en nuestra clasificación oficial por temas). Por cuestiones de eficiencia, la base de datos del sistema de recuperación de información almacenará de forma redundante los siguientes datos (por ejemplo, para permitir la ordenación de los resultados obtenidos para una consulta): • Para cada término, el número de documentos distintos en los que aparece y el número total de veces que aparece en todos los documentos de la base de datos. • Para cada documento, su tamaño (en palabras), el número de palabras diferentes que incluye y la frecuencia de la palabra que más se repite en el documento. Diseñe una base de datos relacional para el problema planteado anteriormente: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias de todas y cada una de las tablas de nuestra base de datos.
8 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el desarrollo de un sistema de información geográfica (SIG). El objetivo del sistema es recopilar información acerca del uso del suelo en el municipio de Cuautitlán. Tras analizar el problema, hemos obtenido la siguiente lista de requisitos: • El SIG almacenará datos acerca de la división administrativa del terreno en parcelas, tal como figuran en el catastro (coordenadas, superficie, altitud...). • A parte de las parcelas en sí, nos interesa almacenar datos geológicos acerca de la composición de los suelos de la parcela. Ya que una parcela puede tener zonas con distintos tipos de suelos, utilizaremos una capa diferente en nuestro GIS para almacenar la información geológica acerca del suelo. NOTA: Para ver qué zonas de terreno pertenecen a cada parcela utilizaremos la capacidad del GIS de realizar consultas a partir de las coordenadas de las distintas áreas. • Nuestro sistema deberá mantener información acerca de los propietarios de las distintas parcelas, teniendo en cuenta que una parcela puede tener varios propietarios. • Los propietarios de una parcela, identificados por su CURP, pueden ser personas físicas (con nombre, apellidos, RFC, fecha de nacimiento, dirección y teléfono de contacto) o entidades jurídicas (con nombre, dirección de la sede social y responsable administrativo, que es una persona). • Las parcelas pertenecen a municipios. Cada municipio tiene un nombre único dentro de su estado, aunque distintos estados pueden tener municipios con el mismo nombre. • También registraremos datos climáticos en nuestro SIG, para lo cual mediremos las temperaturas (máxima y mínima) y precipitaciones diarias para cada municipio, ya que no disponemos de los medios necesarios para medir diariamente dichos datos en todas las parcelas en que se divide la zona geográfica abarcada por nuestro GIS. Diseñe una base de datos relacional para el problema planteado: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias de todas y cada una de las tablas de nuestra base de datos.
9 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una aplicación para la gestión de un videoclub. Tras analizar detenidamente el problema, enumeramos los datos que nuestra aplicación debe gestionar adecuadamente: • Hemos de mantener un registro de los clientes del videoclub (RFC, nombre, apellidos, dirección y teléfono). • Nuestro videoclub oferta un amplio catálogo de películas (título, año, director, reparto...). • Cada película la suministra una distribuidora (nombre, dirección, url...). • De cada película, el videoclub dispone de una o varias copias para alquilárselas a sus clientes. Cada copia viene identificada por un número de registro. • Nuestra aplicación gestiona los alquileres de las copias de las películas. De cada alquiler se almacenan, al menos, su fecha, la fecha de devolución de la copia y el importe que el cliente ha de pagar. • Cada película tiene asociada una tarifa (p.ej. los alquileres de últimas novedades, títulos clásicos y películas infantiles tienen precios diferentes). Para calcular el importe de un alquiler, se utiliza la siguiente fórmula: total = base + extra*penalización, donde extra es el número de días de más que el cliente se queda la copia de la película sin devolverla. En otras palabras, cada tarifa tiene un precio base (en pesos), un período de tiempo (expresado en días) en el que el cliente puede quedarse su copia alquilada sin costo adicional y una penalización para quien no devuelve las copias que alquila (en pesos por día extra). Diseñe una base de datos relacional para el problema planteado en la página anterior: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias de todas y cada una de las tablas de nuestra base de datos.
10 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una aplicación para facilitar la gestión de los proyectos de una empresa. Tras analizar detenidamente el problema, averiguamos que nuestra aplicación debe cumplir los siguientes requisitos: • Se ha de mantener un registro de los proyectos de la empresa (nombre en clave, denominación comercial, fecha de inicio, fecha de finalización, estado actual...) • Nuestra aplicación gestionará los recursos humanos de la empresa y le permitirá al usuario visualizar la ficha de cada empleado (RFC, nombre, apellidos, dirección, teléfono, correo electrónico, fecha de contratación...). • Cada proyecto tiene un promotor, que ha de ser uno de los empleados de la empresa y que ejercerá de jefe de proyecto durante la duración del mismo. • Cada proyecto se descompone en una serie de tareas (descripción, tipo, fecha de inicio estimada, fecha de inicio real, duración estimada, duración real...). • Los empleados de la empresa se adscriben a las distintas tareas en las que se descomponen los proyectos que en cada momento estén en marcha. • Asociados a cada tarea se genera una serie de documentos (p.ej. el documento de especificación de requisitos, el código fuente de un componente...). Cada documento viene caracterizado por su código (único dentro del ámbito del proyecto al que corresponde), una descripción y su tipo. • Nuestro sistema también se encarga de mantener almacenadas las distintas versiones de los documentos que se van generando a lo largo del proyecto. A cada versión de cada documento, que se almacena digitalizada en nuestro sistema, se le asocia también una descripción y una fecha. Diseñe una base de datos relacional para el problema planteado: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro modelo en un sistema gestor de bases de datos relacionales
11 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una aplicación para gestionar la liga ABCD de baloncesto. Tras analizar detenidamente el problema, averiguamos que nuestra aplicación debe cumplir los siguientes requisitos: • En la liga participan 18 equipos. • Cada uno de los equipos tiene su sede en un pabellón con una capacidad que determina el número máximo de asistentes a un encuentro. • Cada equipo tiene una plantilla con una serie de jugadores (numero, nombre, estatura, posición...). Para simplificar, suponemos que un jugador, una vez que juega con un equipo, no puede competir con otro equipo distinto durante la misma temporada. • Todos los equipos se enfrentan entre sí en una liga a doble vuelta de 34 jornadas. Esto es, cada equipo juega 34 partidos (17 como local y 17 como visitante). • Nuestro sistema ha de encargarse de mantener el calendario de encuentros de cada jornada, los resultados de los partidos y las estadísticas de los distintos jugadores para cada partido (minutos jugados, puntos, rebotes, asistencias, faltas personales...). Diseñe una base de datos relacional para el problema planteado: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades identificadas, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro diseño en una base de datos relacional.
12 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una aplicación que sirva de soporte a la organización de una reunión científica (congreso o seminario). Tras analizar detenidamente el problema, averiguamos que nuestra aplicación debe cumplir los siguientes requisitos: • Los congresistas (asistentes al congreso) se registran para poder asistir a las sesiones del congreso. Al registrarse, han de indicar su nombre y apellidos, la institución a la que pertenecen, una dirección de correo electrónico válida y, opcionalmente, un número de teléfono móvil en el que recibirá notificaciones vía SMS. • En el congreso se presentan trabajos remitidos por los propios congresistas. Cada trabajo tiene un título, un “abstract” (un resumen del trabajo presentado) y una lista de autores asociada. NOTA: Al menos uno de los autores debe estar registrado como asistente al congreso. • En cada sesión del congreso se presenta un subconjunto de los trabajos aceptados para su publicación. Cada sesión tiene asignada una sala donde se realizan las presentaciones en el día y la hora establecidos por los organizadores del congreso. Cada trabajo se presenta en una única sesión. • Cada trabajo de los presentados en una sesión es defendido por un ponente, que ha de ser uno de los coautores del trabajo y debe aparecer registrado como asistente al congreso. • Cada sesión es moderada por el “chairman” de la sesión, que también es un asistente al congreso (usualmente, miembro del comité de organización del mismo). Diseñe una base de datos para el problema planteado: a) Identifique los conjuntos de entidades y los atributos correspondientes a cada uno de los conjuntos de entidades, indicando explícitamente cuáles se seleccionarán como claves primarias de los distintos conjuntos de entidades. b) Analice las relaciones existentes entre los distintos conjuntos de entidades, determine su cardinalidad e identifique los atributos propios de las relaciones (si los hubiera). c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por los conjuntos de entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama E/R, obtenga un conjunto de tablas que nos permita implementar nuestro modelo de datos en una base de datos relacional.
13 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una aplicación que sirva de soporte al funcionamiento de una red social online (una comunidad de usuarios con intereses comunes que deciden ponerse en contacto e intercambiar opiniones e información acerca de sus temas de interés). Tras analizar detenidamente el problema, averiguamos que nuestra aplicación debe cumplir los siguientes requisitos: • Los usuarios de nuestra comunidad virtual se pueden registrar gratuitamente en nuestro sistema. Una vez registrados, para acceder al mismo han de usar su nombre de usuario o ‘nick’ y una contraseña que ellos mismos establecen al registrarse. El usuario también ha de indicar una dirección de correo electrónico válida y, opcionalmente, un número de teléfono móvil en el que recibirá notificaciones vía SMS. El perfil de un usuario puede incluir, opcionalmente, la URL de su página web personal, su lugar de residencia (ciudad y país), su fecha de nacimiento, una fotografía (o icono) y una breve descripción en la que el usuario podrá especificar sus aficiones o preferencias. • Los usuarios podrán subscribirse a distintos grupos, siendo cada grupo de usuarios gestionado por uno o varios moderadores que pueden decidir a quién aceptan y a quién rechazan en el grupo. Cualquier usuario puede crear nuevos grupos y solicitar su acceso a grupos ya existentes. Alguno de los moderadores deberá aceptar o rechazar las solicitudes de acceso. En cualquier momento, el moderador puede expulsar a alguien del grupo y el usuario puede darse de baja del grupo. • Los grupos estarán organizados jerárquicamente y se podrán dividir en subgrupos (p.ej. El grupo “reseñas” puede estar dividido en “reseñas de libros”, “críticas de películas” y “comentarios sobre videojuegos”). • Los usuarios del sistema pueden enviar artículos a uno o varios grupos (textos con información de interés para los miembros del grupo, como reseñas de libros, críticas de productos, tutoriales técnicos de diversas materias, etc.). Cada artículo tendrá un identificador único, una fecha de creación, un usuario responsable (el creador del artículo), un resumen (como el “subject” de un e-mail) y un texto (el artículo en sí). También tendrá, para cada grupo al que ha sido enviado, un estado editorial asociado (“enviado”, “aprobado” o “rechazado”) que será controlado por los moderadores de cada grupo (para que puedan actuar como tales si fuese necesario). • Una vez publicado un artículo, los demás usuarios de los grupos en los que se publique el artículo podrán escribir comentarios sobre él. Cada comentario tendrá un firmante (un usuario del sistema), una fecha, un texto y un estado editorial asociado. • Los usuarios del sistema podrán enviar mensajes privados a otros usuarios del sistema (el sistema, automáticamente, notificará por e-mail al recipiente del mensaje). • Los usuarios también podrán publicar noticias de interés general que aparecerán en la página de bienvenida del sistema. Las noticias, que estarán moderadas por los administradores del sistema, llevarán una fecha asociada y caducarán automáticamente pasada esta fecha. El sistema incluirá un servicio automático de notificaciones, por lo que deberá mantener información de contacto de cada usuario registrado (p.ej. e-mail o teléfono móvil para envío de SMSs), si bien esta información será privada y no se compartirá con los demás miembros de la comunidad salvo que así lo desee el usuario. • Cada usuario podrá mantener una lista de contactos personales (otros usuarios con los que nuestro usuario quiere mantenerse en contacto). El sistema enviará notificaciones a un usuario cada vez que alguien de su lista de contactos envíe algún artículo o escriba un comentario. • Un usuario también podrá añadir artículos concretos a su lista de marcadores (para poder acceder en cualquier momento a los artículos que considere especialmente relevantes). Diseñe una base de datos para el problema planteado: a) Identifique los conjuntos de entidades y los atributos correspondientes a cada uno de los conjuntos
de entidades, indicando explícitamente cuáles se seleccionarán como claves primarias de los distintos conjuntos de entidades. b) Analice las relaciones existentes entre los distintos conjuntos de entidades, determine su cardinalidad e identifique los atributos propios de las relaciones (si los hubiera). c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por los conjuntos de entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama E/R, obtenga un conjunto de tablas que nos permita implementar nuestro modelo de datos en una base de datos relacional. e) Suponga ahora que se nos encarga construir un data warehouse para analizar el funcionamiento de las redes sociales que se crean en nuestro sistema. ¿Qué cubos de datos crearía y con qué finalidad? Indique explícitamente las dimensiones y medidas asociadas a cada uno de los cubos de datos propuestos.
14 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una aplicación que sirva de soporte a un sistema de compraventa de artículos mediante subastas a través de Internet (tipo eBay). Tras analizar detenidamente el problema, averiguamos que nuestra aplicación debe cumplir los siguientes requisitos: • Para poder realizar una operación de compraventa, los usuarios deben registrarse en el sistema rellenando un formulario en el que han de especificar sus datos personales (nombre, apellidos, dirección, e-mail). • Cuando un usuario desea poner en venta un artículo, ha de rellenar otro formulario en el que especifica los datos del artículo que se pone en venta (nombre y descripción), su estado (nuevo, usado...), su precio de salida y la fecha límite de la subasta. • Para facilitar la búsqueda de artículos en venta, los artículos se organizan en categorías. Cada categoría de artículos puede, a su vez, englobar otras categorías. Por ejemplo, la categoría “libros” puede incluir a categorías como “ficción” [obras literarias], “no ficción”, “primeras ediciones” o “libros firmados” y un libro concreto puede pertenecer a varias categorías (p.ej. un ejemplar de la primera edición de una novela firmado por el autor). • Los usuarios pujan por los artículos que desean comprar ofreciendo un precio mayor al ya ofrecido por otros usuarios. El sistema registra el momento en que se realiza cada puja, la identidad del postor y el precio que éste ofrece por el artículo subastado. • Finalmente, un artículo se adjudica al usuario que, llegada la fecha límite de la subasta, haya realizado una puja mayor. Si la puja mayor no alcanza el precio de salida del artículo, el propietario del artículo tiene la posibilidad de declarar nula la subasta. Si no es así, tiene la obligación de vender el artículo al precio ofrecido por el mejor postor. Diseñe una base de datos para el problema planteado: a) Identifique los conjuntos de entidades y los atributos correspondientes a cada uno de los conjuntos de entidades, indicando explícitamente qué atributos se utilizarán como claves primarias de los distintos conjuntos de entidades identificados. b) Analice las relaciones existentes entre los distintos conjuntos de entidades, determine su cardinalidad e identifique los atributos propios de las relaciones (si los hubiera). c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por los conjuntos de entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama E/R, obtenga un conjunto de tablas que nos permita implementar nuestro modelo de datos en una base de datos relacional.
15 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una base de datos que sirva de soporte a un servicio web de búsqueda de empleo (tipo infojobs.net o monster.es). Tras analizar detenidamente el problema, averiguamos que nuestro sistema debe cumplir los siguientes requisitos: • Los usuarios de nuestro sistema pueden ser demandantes de empleo (candidatos) o clientes corporativos (empresas) que usarán nuestro sistema para insertar ofertas de trabajo y realizar procesos de selección. • Una vez registrados, los candidatos introducirán sus datos de contacto (nombre, dirección, teléfono, e-mail) y podrán detallar su curriculum. • El curriculum de un candidato incluirá su experiencia profesional (puesto, empresa, descripción de responsabilidades, fecha de inicio y fecha de finalización de cada una de las actividades profesionales que haya desempeñado) y su formación académica (título, especialidad, institución y fecha, para cada una de sus titulaciones oficiales), así como otros méritos que el candidato desee hacer constar. • Por su parte, las empresas serán las que podrán introducir nuevas ofertas de empleo en nuestro sistema. • Entre los datos de cada oferta de empleo se incluirán una descripción del puesto vacante, el número de vacantes que se ha de cubrir, la fecha de la oferta, su ubicación (población, provincia y país) y los requisitos del puesto, así como la duración del contrato, el horario de la jornada laboral y el salario asociado al puesto. • Los requisitos asociados a una oferta de trabajo pueden ser requisitos mínimos que han de cumplir los candidatos (nivel de estudios, experiencia previa, idiomas, etc.) o, simplemente, requisitos deseables para el puesto. Obviamente, pueden ser varios para una misma oferta. • Los candidatos, al ver una oferta de empleo de su interés, se inscribirán en ella para poder participar el proceso de selección correspondiente. • Las ofertas de empleo se clasificarán por categorías profesionales y estas categorías se organizarán de forma jerárquica para facilitar la búsqueda de ofertas por parte de los demandantes de empleo (p.ej. “Business Intelligence” como subcategoría de “Sistemas de Información” o “Estadística” como especialidad de “Matemáticas”). • Los candidatos podrán subscribirse a un servicio de notificaciones por correo electrónico de las ofertas de empleo correspondientes a las categorías que sean de su interés. Diseñe una base de datos para el problema planteado: a) Identifique los conjuntos de entidades y los atributos correspondientes a cada uno de los conjuntos de entidades, indicando explícitamente qué atributos se utilizarán como claves primarias. b) Analice las relaciones existentes entre los distintos conjuntos de entidades, determine su cardinalidad e identifique los atributos propios de las relaciones (si los hubiera). c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por los conjuntos de entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama E/R, obtenga un conjunto de tablas que nos permita implementar nuestro modelo de datos en una base de datos relacional.
16 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de una base de datos que sirva de soporte al sistema de gestión de las nóminas de una empresa. Tras analizar detenidamente el problema, averiguamos que nuestro sistema debe cumplir los siguientes requisitos: • La empresa tiene un conjunto de empleados trabajando con contrato (un empleado puede firmar varios contratos a lo largo de su carrera profesional). • Para cada empleado, el sistema almacena sus datos personales (RFC, CURP, nombre, apellidos, teléfono, dirección) y el número de su cuenta corriente para realizar las transferencias correspondientes a las nóminas. • Cada contrato firmado por un empleado tiene una fecha de alta, una fecha de baja (nula si el contrato es indefinido), una categoría asociada y un puesto de destino. • El sueldo base de un empleado depende de su categoría. • En función del puesto de destino del empleado, el empleado puede recibir uno o varios complementos, que se sumarán al sueldo base del empleado. • Además, por su antigüedad en la empresa, el empleado cobrará trienios (cuyo importe depende de la categoría de su contrato actual). • Por último, el empleado también cobrará complementos por los cargos que desempeñe (durante la duración de su ocupación del cargo, que no tiene por qué coincidir con la de su contrato). • De las percepciones salariales indicadas en los puntos anteriores, la nómina de cada empleado incluirá una serie de deducciones (p.ej. aportaciones a la I.M.S.S., desempleo, formación profesional e I.S.R.). • Algunas de estas deducciones se calculan mediante un porcentaje fijo (p.ej. 4.7% de contingencias comunes), mientras que otras se calculan por cuotas. • El sistema debe almacenar todas las nóminas emitidas mensualmente e incluir automáticamente tanto los distintos conceptos correspondientes a percepciones salariales del empleado como los distintos tipos de deducciones a los que está sujeta su nómina.
17 Problema de diseño de bases de datos y sistema de información.
Supongamos que se nos ha encargado el diseño de un sistema para la gestión de proyectos de una empresa, su planificación temporal y el uso que hacen de recursos de distintos tipos. Tras analizar detenidamente el problema, enumeramos los requisitos que ha de cumplir el sistema: • Hemos de mantener un registro de proyectos, cada uno de los cuales tiene un nombre en clave que lo identifica, un título, una descripción, una fecha de inicio y una fecha de finalización estimada. • Cada proyecto se descompone en un conjunto de tareas, cada una de las cuales tiene un nombre y una duración estimada, así como una fecha de inicio prevista. • Cada tarea, a su vez, también puede descomponerse en un conjunto de tareas (en tal caso, su duración estimada será la suma de las duraciones estimadas de las tareas que la componen). • Cada tarea de un proyecto hace uso de una serie de recursos, que pueden utilizarse a tiempo completo o a tiempo parcial. La utilización de un recurso por parte de una tarea se expresa mediante un porcentaje (%). • Los recursos pueden compartirse entre distintas tareas siempre y cuando no se supere la disponibilidad de un recurso en un momento determinado, que también se especifica como un tanto por ciento (p.ej. 200% indica dos unidades disponibles del recurso). • Los empleados de la empresa son un tipo más de los recursos que pueden ser requeridos para la realización de una tarea (obviamente, su disponibilidad nunca puede superar el 100%). • Cada proyecto tiene un jefe de proyecto, que ha de ser un empleado de la empresa, y cada tarea tiene también un responsable, que puede o no coincidir con el jefe del proyecto al que corresponde (NOTA: el responsable de una tarea siempre será alguien del personal de la empresa). • Algunas tareas tienen dependencias (esto es, para comenzar la realización de una tarea han de haberse completado previamente las tareas de las que depende) y estas dependencias han de identificarse para poder elaborar la planificación temporal de un proyecto concreto, que también tendrá en cuenta el uso de recursos requerido por cada tarea (para evitar sobreasignaciones). Diseñe una base de datos para el problema planteado: a) Identifique las entidades y los atributos correspondientes a cada una de las entidades, indicando explícitamente cuáles serán las claves primarias de las distintas entidades. b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad, así como sus atributos específicos cuando los haya. c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las entidades y las relaciones identificadas en los apartados anteriores. d) A partir del diagrama, obtenga el conjunto de tablas que nos permitan implementar nuestro modelo E/R en una base de datos relacional, indicando las claves primarias de todas y cada una de las tablas de nuestra base de datos.