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
2 Problema
4 Problema
6 Problema
8 Problema
10 Problema
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 (DNI, 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.
11 Problema
Supongamos que se nos ha encargado el diseño de una aplicación para gestionar la liga BCD 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 (dorsal,
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…).
12 Problema
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 primer apellido (fuera de España no se usa el segundo
apellido), 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).
13 Problema
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).
14 Clínica veterinaria
15 Problema
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.
16 Problema
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.
17 Problema
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 (DNI, 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 S.S.,
desempleo, formación profesional e I.R.P.F.). • Algunas de estas deducciones se calculan
mediante un porcentaje fijo (p.ej. 4.7% de contingencias comunes), mientras que otras se
calculan por tramos (p.ej. IRPF: 24% de 45k€ a 17k€, 28% de 17k€ a 32k€, 37% de 32k€ a 52k€,
43% a partir de 52k€). • 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.
18 problema
19 problema
Crear un diseño entidad relación (estando prohíbido utilizar símbolos del modelo extendido)
que permita gestionar los datos de una biblioteca de modo que
Crear un diseño entidad relación que permita controlar el sistema de información de una
academia de cursos siguiendo estas premisas:
21 problema
Crear un diseño entidad relación que permita almacenar datos geográficos referidos a España:
Diseñar un modelo entidad/relación que almacene los datos de todas las guerras de la historia
de modo que:
• Se almacene 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) y que incluso pueden abandonar la guerra antes de que esta
finalice (como Rusia en la 1ª guerra mundial)
• Los paises que se almacenan en la base de datos pueden no ser paises actualmente
(como Prusia, Aragón, Asiria,etc.) por lo que se ha contemplado que en la base de datos
se almacenen los años en los que el país ha sido independiente, teniendo en cuenta que
hay paises que ha habido momentos en los que ha sido independiente y otros en los que
no (por ejemplo Croacia). Bstará con almacenar los periodos en los que ha sido
independiente.
23 problema
Se trata de crear una base de datos sobre un almacén de piezas de modo que:
• Cada pieza se identifica con dos letras (tipo, por ejemplo TU=tuerca) y un número
(modelo, por ejemplo 6)
• Almacenamos un atributo que permite saber la descripción de cada tipo de pieza. Es
decir el tipo TU tendrá la descripción tuerca.
• Necesitamos conocer el precio al que vendemos cada pieza.
• Además hay piezas que se componen de otras piezas, por ejemplo una puerta se
compone de una hoja de madera, una bisagra y un picaporte. Incluso una pieza puede
estar compuesta de otras piezas que ha su vez pueden estar compuestas por otras y así
sucesivamente
• Tenemos una serie de almacenes de los que guardamos su número, descripción,
dirección y el nombre de cada estantería de almacén. Cada estantería se identifica por
tres letras.
• Necesitaremos saber la cantidad de piezas que tenemos en cada almacén y saber en
qué estanterías están las piezas buscadas
24
25
• Aparezcan los datos de todos los empleados y empleadas: dni, nº de seguridad social,
código de trabajador, nombre, apellidos, dirección, teléfono y departamento en el que
trabajan indicado por su código y nombre.
• También hay que tener en cuenta que cada trabajador puede tener un responsable (que
en realidad es otro trabajador)
• Los departamentos poseen un único coordinador del mismo
• Necesitamos almacenar la categoría profesional de los trabajadores y trabajadoras,
teniendo en cuenta que la categoría a veces cambia al cambiar el contrato, de los
contratos se almacena la fecha de inicio del mismo y la fecha final (un contrato en
vigor tendrá como fecha final el valor nulo).
• También controlaremos las nóminas que ha recibido el trabajador de las que sabemos
la fecha, el salario y a qué trabajador van dirigidas y la categoría del mismo.
26 Vuelos
Crear el esquema entidad/relación que permita gestionar reservas de vuelos, de modo que:
• Los clientes pueden reservar vuelos. Con la reserva se pueden reservar varias plazas,
pero no poseeremos el número de asiento hasta obtener la tarjeta de embarque. En
ese instante se asignará el asiento que tiene como identificación la fila, columna y la
planta en la que está situado.
• Se pueden obtener tarjetas de embarque sin tener reserva
• Las tarjetas de embarque se refieren a un único cliente. De modo que aunque
reserváramos nueve plazas, cada cliente podrá sacar su tarjeta de embarque indicando
el número de reserva, la fecha de la misma y sus datos personales (dni, nombre,
apellidos, dirección y teléfono). Además la persona que reserva debe indicar una
tarjeta de crédito que quedará asociada a esa persona.
• El vuelo que se reserva tiene un código único, una fecha y una hora de salida y de
llegada y un aeropuerto de salida y otro de llegada
• Los aeropuertos poseen un código único, además del nombre y la localidad y el país en
el que se encuentran
• Se guarda información sobre los aviones, código y número de plazas. Los vuelos sólo les
puede realizar un avión determinado, pero el mismo avión puede realizar (como es
lógico) otros vuelos
27
Crear el esquema entidad/relación que permita gestionar los datos sobre preparación de rectas
de cocina
28
Crear el esquema entidad/relación que permita crear el diseño de una base de datos que
almacena información sobre los partidos de una liga de futbol una temporada. Hay que tener
en cuenta que en dicha liga los jugadores no pueden cambiar de equipo
29 Accidentes geográficos
Realizar un esquema entidad/relación que sirva para almacenar información geográfica. Para
ello hay que tener en cuenta
31 Empresa de comidas
Crear un diseño entidad/relación para una empresa de comidas. En la base de datos tienen que
figurar:
Crear un diseño entidad/relación que permita modelar un sistema que sirva para simular el
funcionamiento de una red social, teniendo en cuenta lo siguiente:
Crear un esquema Entidad/relación que represente un modelo para llevar los datos que maneja
un restaurante de menús diarios. Teniendo en cuenta que:
• Sólo interesa llevar los datos de los menús diarios a la hora de la comida, nada más del
restaurante
• Cada menús se compone de una serie de posibles platos. cada plato se puede repetir
en diferentes días. Los platos pueden ser primer plato, segundo plato o postres.
• De cada plato se almacena el nombre (por ejemplo Arroz negro con setas) y una
pequeña descripción.
• De los menús almacenamos la fecha en la que se ofrece el menú, el número de personas
que han tomado menú ese día. Además almacenamos la cantidad de cada plato que se
ha tomado ese día.
• Se almacena también la temperatura que hacía el día del menú para así poder analizar
las temperaturas y los platos exitosos
34. Twitter
Crear un esquema Entidad/relación que represente un modelo para llevar los datos que maneja
la red social Twitter: usuarios, mensajes,...
35. Horario escolar
• Siendo más realistas, nos damos cuenta de que en un curso escolar, puede haber varios
profesores responsables de una asignatura (por bajas, ceses, etc.); por lo que anotamos
cuándo empezó a impartir dicho profesor la asignatura y cuando terminó (si no ha
terminado, se dejaría vacío)
• Asegurar que podemos averiguar gracias al diseño, que si buscamos a un profesor un
día concreto (por ejemplo el 13 de Mayo de 2012) a una hora concreta (sexta hora),
podríamos saber en qué aula va a estar.
36. Inmuebles
Crear un diseño entidad/relación que permita modelar un sistema que sirva para gestionar una
empresa que posee inmuebles. Para ello
• Se almacenan los clientes usando su DNI, Teléfono fijo, Móvil, Nombre y Apellidos.
• Se almacenan los trabajadores y se almacenan los mismos datos. Ocurre además que
un trabajador puede ser un cliente (porque puede alquilar o comprar mediante la
inmobiliaria) a veces.
• A cada cliente y trabajador se le asigna un código personal
• Los clientes pueden comprar pisos, locales o garajes. En los tres casos se almacena un
código de inmueble (único para cada inmueble), los metros que tienen, una descripción
y su dirección.
• Los pisos tienen un código especial de piso que es distinto para cada piso.
• En los locales se indica el uso que puede tener y si tienen servicio o no.
• De los garajes se almacena el número de garaje (podría repetirse en distintos edificios)
y la planta en que se encuentra (para el caso de garajes que están en varias plantas).
Los garajes además pueden asociarse a un piso y así cuando se alquile el piso se incluirá
el garaje.
• La empresa prevé que podría haber inmuebles que podrían no ser ni locales, ni garajes,
ni pisos
• Los inmuebles se pueden comprar. Incluso varias veces. Se asigna un código de compra
cada vez que se haga, la fecha y el valor de la compra. La compra puede tener varios
titulares.
• Cada inmueble se puede alquilar y en ese caso se asigna un número de alquiler por cada
inmueble. Ese número se puede repetir en distintos inmuebles (es decir puede haber
alquiler nº 18 para el inmueble 40 y el 35). Pero no se repite para el mismo inmueble.
• Al alquilar queremos saber el nombre del agente de la empresa que gestionó el alquiler
así como a qué persona (solo una) estamos alquilando el inmueble.
• Cada pago de cada alquiler será almacenado en la base de datos, llevando el año, el
mes y el valor del mismo.