Unidad Didáctica 2. Diseño de bases de datos relacionales
Apuntes de BD para DAW, DAM y ASIR
Curso 2023/2024
1 Ejercicios Modelo Entidad-Relación
Diseña el modelo entidad-relación para cada uno de los siguientes ejercicios.
1.1 Proveedores
Tenemos que diseñar una base de datos sobre proveedores y disponemos de la siguiente información:
De cada proveedor conocemos su nombre, dirección, localidad, provincia y un identificador de proveedor que será único para cada uno de ellos.
Nos interesa llevar un control de las piezas que nos suministra cada proveedor. Es importante conocer la cantidad de las diferentes piezas que nos suministra y en qué fecha lo hace. Tenga en cuenta que un mismo proveedor nos puede suministrar una pieza con el mismo identificador en diferentes fechas. El diseño de la base de datos debe permitir almacenar un histórico con todas las fechas y las cantidades que nos ha proporcionado un proveedor.
Una misma pieza puede ser suministrada por diferentes proveedores.
De cada pieza conocemos un identificador que será único, nombre, color, precio y categoría.
Pueden existir varias categorías y para cada categoría hay un nombre y un identificador de categoría único.
Una pieza sólo puede pertenecer a una categoría.
1.2 Cadena editorial
Tenemos esta información sobre una cadena editorial:
La editorial tiene varias sucursales, con su domicilio, teléfono y un identificador de sucursal.
Cada sucursal tiene varios empleados, de los cuales tendremos su nombre, apellidos, NIF y teléfono. Un empleado trabaja en una única sucursal.
En cada sucursal se publican varias revistas, de las que almacenaremos su título, número de registro, periodicidad y tipo.
Una revista puede ser publicada por varias sucursales.
La editorial tiene periodistas (que no trabajan en las sucursales) que pueden escribir artículos para varias revistas. Almacenaremos los mismos datos que para los empleados, añadiendo su especialidad.
También es necesario guardar las secciones fijas que tiene cada revista, que constan de un título y una extensión.
Para cada revista, almacenaremos información de cada ejemplar, que incluirá la fecha, número de páginas y el número de ejemplares vendidos.
1.3 Empresa de material informático
Tenemos que diseñar una base de datos para una empresa de material informático, de la que tenemos esta información:
Un equipo consta de varios componentes. Pueden ser necesarios varios componentes del mismo tipo para montar un equipo, por lo que será necesario almacenar la cantidad de componentes que se necesitan en cada caso.
Un cliente puede comprar equipos completos o componentes sueltos. Habrá que almacenar la cantidad de equipos o la cantidad de componentes de cada tipo que compra cada cliente. También habrá que guardar la fecha de la compra.
Tenga en cuenta que un mismo cliente puede comprar el mismo equipo o el mismo componente en diferentes fechas. El diseño de la base de datos debe permitir almacenar un histórico con todas las fechas y las cantidades de equipos o componentes que ha comprado.
Cada equipo está etiquetado con un identificador de equipo, una descripción, un precio y el stock disponible.
Cada componente está etiquetado con un identificador de componente, una descripción, un precio y el stock disponible.
Los datos que almacenamos los clientes son el NIF, nombre, apellidos, domicilio, localidad, provincia y teléfono.
Los datos que almacenamos de los empleados son el NIF, nombre, apellidos y la sección donde trabaja.
Un empleado trabaja en una única sección.
Una sección se identifica por un id y un nombre de sección.
En cada compra realizada por un cliente interviene un empleado y será necesario guardar qué empleado es el que ha atendido a cada cliente para cada una de las compras.
1.4 Agencia de viajes
Tenemos que diseñar una base de datos para gestionar las reservas de hoteles y vuelos que realizan los clientes de una agencia de viajes:
La agencia de viajes está compuesta por un conjunto de sucursales. Cada sucursal está definida por el identificador de sucursal, dirección, localidad, provincia y teléfono.
Un cliente puede contratar vuelos y estancias en hoteles a través de alguna de las sucursales que tiene la agencia de viajes.
Cada vuelo está definido por un identificador, fecha/hora de salida, fecha/hora de llegada, origen, destino y número de plazas totales.
Cada hotel está definido por el identificador del hotel, nombre, dirección, localidad, provincia, teléfono y número de estrellas.
La información que se desea almacenar para cada cliente es un nif, nombre, apellidos, teléfono y email.
A la agencia de viajes le interesa conocer a través de qué sucursal ha contratado cada cliente los servicios de vuelo y alojamiento.
A la hora de reservar un vuelo el cliente puede elegir cualquiera de los vuelos que ofrece la agencia y en qué clase (turista o primera) desea viajar.
El cliente se puede hospedar en cualquiera de los hoteles que ofrece la agencia, y elegir el régimen de hospedaje (media pensión o pensión completa). Siendo significativa la fecha de entrada y de salida.
1.5 Exámenes
Los profesores del módulo de Bases de Datos deciden crear una base datos que contenga la información de los resultados de las pruebas realizadas por los alumnos:
Los alumnos están definidos por un identificador único, NIF, nombre, apellidos y el grupo al que asisten a clase. Los grupos se identifican con una letra mayúscula que puede estar entre la
A
y laZ
.Dichos alumnos realizan dos tipos de pruebas a lo largo del curso académico:
Exámenes teóricos. Cada alumno realiza varios a lo largo del curso y se definen por un identificador único, un título, el número de preguntas y la fecha de realización (será la misma para todos los alumnos que realizan el mismo examen). Habrá que almacenar la nota de cada alumno por examen.
Prácticas. Se realiza un número indeterminado de prácticas durante el curso académico. Se definen por un identificador, un título y el grado de dificultad. Los posibles grados de dificultad que pueden aparecer son:
Baja
,Media
yAlta
. En este caso los alumnos pueden examinarse de cualquier práctica cuando lo deseen, debiéndose almacenar la fecha y la nota obtenida.
De los profesores vamos a almacenar un identificador, NIF, nombre y apellidos.
Nos interesa saber qué profesor o profesores han participado en el diseño de una práctica. Tenga en cuenta que en el diseño de una práctica puede colaborar más de un profesor y que un profesor puede diseñar más de una práctica. También interesa almacenar la fecha en la que cada profesor ha participado en el diseño de la práctica. En el caso de que un profesor participe en el diseño de una misma práctica en fechas distintas sólo guardaremos la última fecha en la que participó.
Los exámenes teóricos son diseñados por un solo profesor y un profesor puede diseñar varios exámenes teóricos a lo largo del curso.
1.6 Concesionario de automóviles
Un concesionario de automóviles desea informatizar su gestión de ventas de vehículos. En particular, se quiere tener almacenada la información referente a los clientes que compran en el concesionario, los vehículos vendidos, así como los vendedores que realizan las distintas ventas. Para ello se tendrá en cuenta que:
Existen diferentes marcas de automóviles, para cada marca se almacena un identificador único y un nombre. Por ejemplo, pueden existir las marcas Audi, BMW, Volkswagen, etc.
Una marca puede tener muchos modelos diferentes pero un modelo sólo puede pertenecer a una marca. De cada modelo se almacena un identificador único y un nombre. Por ejemplo, para la marca Audi, podemos tener los modelos A1, A3, A4, etc.
Para cada modelo pueden existir diferentes versiones. De cada versión se almacena un identificador único, un nombre de versión, la potencia, un precio base y el tipo de combustible. Por ejemplo, para la marca Audi, modelo A3, pueden existir las versiones AUDI A3 1.0 TFSI 85kW (116CV), AUDI A3 1.6 TDI 85kW (116CV), etc.
El tipo de combustible puede ser gasolina, diesel, gas licuado del petróleo (GLP), gas natural comprimido (GNC), híbrido, híbrido enchufable o eléctrico.
Cada una de las versiones dispondrá de unos extras adicionales (aire acondicionado, pintura metalizada, etc). Los extras vienen definidos por un identificador, nombre y una descripción. Hay que tener en cuenta que un extra puede ser común para varias versiones variando sólo el precio en cada caso.
En cuanto a los clientes, la información de interés es el nombre, apellidos, NIF, dirección y teléfono, lo mismo que para los vendedores.
Los clientes pueden ceder su coche usado al comprar un vehículo nuevo. El coche usado vendrá definido por su marca, modelo, versión, matrícula y precio de tasación. Es importante conocer la fecha en la que el cliente realiza esta cesión.
Cuando se vende un coche nuevo en el concesionario, se desea saber quién ha sido el vendedor, el cliente, la versión y los extras que ha comprado. También es necesario almacenar la fecha de la venta y la matrícula del nuevo vehículo.
1.7 Club Náutico
Un club náutico desea tener informatizados los datos correspondientes a sus instalaciones, empleados, socios y embarcaciones que se encuentran en dicho club. El club está organizado de la siguiente forma:
- Los socios pertenecientes al club vienen definidos por su nombre, dirección, NIF, teléfono y fecha de ingreso en el club.
- Las embarcaciones vienen definidas por matrícula, nombre, tipo y dimensiones.
- Los amarres tienen como datos de interés el número de amarre, la lectura del contador de agua y luz, y si tienen o no servicios de mantenimiento contratados.
- Hay que tener en cuenta que una embarcación pertenece a un socio aunque un socio puede tener varias embarcaciones. Una embarcación ocupará un amarre y un amarre está ocupado por una sola embarcación. Es importante la fecha en la que una embarcación es asignada a un amarre.
- Los socios pueden ser propietarios de amarres, siendo importante la fecha de compra del amarre. Hay que tener en cuenta que un amarre pertenece a un solo socio y que no hay ninguna relación directa entre la fecha en la que se compra un amarre y en la que una embarcación se asigna a un amarre.
- El club náutico está dividido en varias zonas definidas por una letra, el tipo de barcos que tiene, el número de barcos que contiene, la profundidad y el ancho de los amarres. Una zona tendrá varios amarres y un amarre pertenece a una sola zona.
- En cuanto a los empleados, estos vienen definidos por su identificador, nombre, dirección, teléfono y especialidad. Un empleado está asignado a varias zonas y en una zona puede haber más de un empleado, siendo de interés el número de barcos de los que se encarga en cada zona. Hay que tener en cuenta que un empleado puede no encargarse de todos los barcos de una zona.
1.8 Información policial
La policía quiere crear una base de datos sobre la seguridad en algunas entidades bancarias. Para ello tiene en cuenta que:
- Cada entidad bancaria se caracteriza por un identificador y por el domicilio de su central.
- Cada entidad bancaria tiene más de una sucursal que también se caracteriza por un identificador y por el domicilio, así como por el número de empleados de dicha sucursal.
- Cada sucursal puede contratar a varios vigilantes jurados, que se caracterizan por su identificador de vigilante y su edad. Un vigilante puede ser contratado por diferentes sucursales (incluso de diferentes entidades) en diferentes fechas. También es necesario almacenar si se ha contratado con arma o no.
- La policía está interesada en controlar las personas que han sido detenidas por atracar sucursales. Estas personas se identifican por un NIF y su nombre completo.
- Algunos de estos atracadores están integrados en algunas bandas organizadas y por ello se desea saber a qué banda pertenecen, sin ser de interés si la banda ha participado en el delito o no. Las bandas se definen por un identificador de banda y por el número de miembros.
- Es necesario saber qué juez ha estado encargado de cada caso, sabiendo que un atracador puede ser juzgado por diferentes jueces en diferentes delitos. Es necesario almacenar si en cada delito la persona detenida ha sido condenada o no, y de haberlo sido cuánto tiempo pasará en la cárcel. Un juez se caracteriza por una clave interna del juzgado, su nombre y los años de servicio.
- En ningún caso interesa saber si un vigilante ha participado en la detención de un atracador.
1.9 Alumno, Asignatura, Profesor
Diseña el diagrama E/R con las siguientes entidades:
- Alumno: identificador, nombre, apellidos, fecha de nacimiento y teléfono.
- Asignatura: identificador de la asignatura, nombre y número de horas.
- Profesor: id de profesor, NIF, nombre, apellidos, especialidad y teléfono.
- Curso Escolar: id de curso escolar, año de inicio y año de fin.
Teniendo en cuenta que:
- Un alumno puede estar matriculado de una o varias asignaturas.
- Además puede estar matriculado en la misma asignatura más de un curso escolar (si repite).
- Se quiere saber el curso escolar en el que cada alumno está matriculado de cada asignatura.
- En una asignatura habrá como mínimo 10 y como máximo 20 alumnos.
- Una asignatura es impartida por un único profesor.
- Un profesor podrá impartir varias asignaturas.
1.10 Gestión de alquileres de viviendas
La Sociedad Pública de Alquiler dependiente del Ministerio de la Vivienda necesita una base de datos para gestionar los alquileres de las viviendas de particulares. Los requisitos de esta base de datos son los que se detallan a continuación.
Es necesario almacenar información sobre la duración de cada uno de los alquileres de una vivienda con el fin de conocer el histórico de alquileres.
La información que se guarda de cada alquiler es un identificador único de alquiler, fecha de inicio, fecha de fin, importe mensual, fianza y fecha de la firma.
Se quiere almacenar información sobre la renovación de un alquiler de una vivienda. Es necesario saber si un alquiler es una renovación de otro alquiler anterior o no, con el fin de poder seguir fácilmente la secuencia de alquileres de una vivienda con la misma persona.
Un alquiler es realizado por un inquilino y de cada inquilino se almacena un identificador único, NIF, nombre, apellidos, fecha de nacimiento y teléfono de contacto.
Es necesario almacenar información sobre las agencias inmobiliarias que gestionan los alquileres de las viviendas.
De cada agencia inmobiliaria se almacena un identificador de agencia, CIF, calle, número, código postal, localidad, provincia y teléfono.
Una vivienda se puede ofertar varias agencias inmobiliarias. Una agencia sólo puede gestionar los alquileres de las viviendas ofertadas por ella.
De cada vivienda se almacena un identificador de vivienda, calle, número, piso, código postal, localidad, provincia y una descripción.
Una vivienda pertenece a un único propietario y un propietario puede tener muchas viviendas.
De cada propietario se almacena un identificador único, NIF, nombre, apellidos, teléfono, nif y email.
1.11 Jardinería
Una empresa que vende productos para jardinería necesita una base de datos para gestionar los pedidos que realizan sus clientes. Los requisitos de esta base de datos son los que se detallan a continuación.
Es necesario almacenar información de los empleados que trabajan en la empresa. La información que se guarda de cada empleado es un identificador único, nombre, apellidos, email, teléfono y el puesto que desempeña dentro de la empresa.
Los empleados trabajan en oficinas y las oficinas están repartidas por todo el país. De cada oficina se almacena un identificador único, dirección, teléfono, localidad y provincia.
Un empleado sólo puede trabajar en una única oficina, pero en una oficina pueden trabajar varios empleados.
Es necesario almacenar quién es el jefe de cada empleado. Tenga en cuenta que un empleado puede ser jefe de varios empleados, pero un empleado sólo puede tener un único jefe.
La información que se almacena de cada cliente es un identificador único, nombre, apellidos, teléfono y dirección.
Un cliente tendrá asociado un único empleado que será su representante de ventas. Sin embargo un empleado puede ser el representante de ventas de muchos clientes.
A la empresa le interesa almacenar los pedidos que realizan los clientes. De cada pedido se almacena un identificador único, fecha de pedido, fecha prevista de entrega, fecha de entrega, estado del pedido y comentarios.
Cada pedido consta de varias líneas de pedido, donde cada línea de pedido se corresponde con cada uno de los diferentes productos que ha comprado el cliente. Cada línea de pedido incluye el producto que se ha comprado, el número de unidades que ha comprado y el precio de cada unidad.
La información que se quiere almacenar de cada producto es un identificador único, una imagen del producto, nombre, descripción, el precio de venta, el número de unidades que hay en stock y la gama del producto.
De cada gama se almacena un identificador único, un nombre y una descripción.
1.12 Steam Celia v1.0
Los alumnos de 1º DAW del IES Celia Viñas de Almería van a desarrollar una plataforma de videojuegos online llamada Steam Celia y necesitan diseñar una base de datos que cumpla con los siguientes requisitos.
Es necesario almacenar información de los usuarios que se registran en la plataforma. Los datos que se almacenan para cada usuario son: identificador único, username, email, contraseña, fecha y hora de registro, país, saldo, fecha y hora del último inicio de sesión.
Los usuarios pueden comprar juegos en la plataforma. De cada compra se almacenan los siguientes datos: identificador único, fecha y hora de la compra, importe.
Cada compra puede contener uno o varios juegos. De cada juego se almacena un identificador único, nombre, descripción, precio, fecha de lanzamiento, género, desarrollador, editor y los requisitos del sistema.
Un juego puede pertenecer a varios géneros (acción, aventura, estrategia, rol, etc). De cada género se almacena un identificador único y un nombre.
De cada desarrollador se almacena un identificador único, nombre, url de su sitio web y número de seguidores.
De cada editor se almacena un identificador único, nombre, nombre, url de su sitio web y número de seguidores.
Cada juego puede estar disponible para todas o para alguna de las siguientes plataformas: Windows, Mac y Linux. Dependiendo de la plataforma donde se ejecute (Windows, Mac o Linux), el juego tendrá unos requisitos del sistema, mínimos y recomendados. De cada requisito del sistema se almacena un identificador único, sistema operativo, procesador, memoria, gráficos, almacenamiento, red y notas adicionales.
Un juego puede tener muchas reseñas realizadas por los usuarios de la plataforma, pero una reseña sólo puede pertenecer a un juego. De cada reseña se almacena un identificador único, fecha y hora de la reseña, puntuación y comentario.
Los usuarios pueden valorar las reseñas que han realizado otros usuarios. Será necesario almacenar quién es el usuario que hace la valoración, si ha sido positiva o negativa y la fecha y hora de la valoración.
Los usuarios tienen una única biblioteca con todos los juegos que han comprado en Steam. Los datos que se almacenan de cada bibliteca son: identificador único, fecha de creación y número de horas jugadas.
Dentro de una biblioteca es posible cear colecciones de juegos para organizar los juegos de una forma más personalizada. Cada colección tendrá un identificador único, un nombre y la fecha de creación.
Los usuarios pueden crear una lista de deseos con los juegos que quieren comprar. De cada lista de deseos se almacena un identificador único, un nombre y la fecha de creación.
Los usuarios pueden enviar una invitación a otro usuario para ser amigos en Steam. De cada invitación se almacena un identificador, la fecha y hora de creación y el estado de la invitación, que puede ser pendiente, aceptada o rechazada.
Un usuario puede ser amigo de otros usuarios de la plataforma. Tendrá que almacenar de algún modo quienes son los usuarios amigos de cada usuario y en qué fecha/hora comenzaron a ser amigos.
Los usuarios también tienen la posibilidad de bloquear a otros usuarios de la plataforma. Tendrá que almacenar de algún modo quiénes son los usuarios bloqueados y en qué fecha/hora fueron bloqueados.
1.13 Goodreads Lite
El IES Celia Viñas de Almería le ha encargado al alumnado de 1º DAW que desarrolle una plataforma de reseña de libros similar a Goodreads. Esta plataforma permite a los usuarios buscar libros, escribir reseñas de libros, crear listas de deseos, registrar el estado de sus lecturas y seguir a otros usuarios de la plataforma.
Diseñe el diagrama Entidad/Relación de una base de datos que cumpla con los siguientes requisitos:
Es necesario almacenar información de los usuarios que se registran en la plataforma. Los datos que se almacenan para cada usuario son: identificador, nombre de usuario, contraseña, correo electrónico, biografía, avatar (imagen de perfil) y país. Cada usuario tiene un tipo de usuario asociado, que puede ser regular o administrador.
De cada libro se almacena un identificador, título, ISBN, fecha de publicación, sinopsis, número de páginas, portada (imagen), editorial e idioma. Cada libro puede tener uno o más autores y puede pertenecer a múltiples géneros y categorías.
De cada autor se almacena un identificador, nombre, fecha de nacimiento, nacionalidad, biografía y una imagen. Un autor puede haber escrito varios libros y un libro puede estar escrito por varios autores.
Los usuarios pueden escribir reseñas sobre los libros, asignando una calificación de 1 a 5. Cada reseña incluye un identificador, fecha de publicación, un texto descriptivo y un indicador de “spoiler alert” que alerta a otros usuarios si la reseña contiene información importante sobre la trama. Cada reseña está vinculada al libro y al usuario que la escribió.
Los usuarios pueden crear listas de deseos para organizar los libros que desean leer. Cada lista tiene un identificador, nombre y una fecha de creación. Las listas de deseos están asociadas al usuario que la creó.
Cada libro puede estar en varias listas de deseos y una lista de deseos puede contener varios libros. Es necesario almacenar la fecha en la que un libro fue añadido a una lista de deseos.
Será necesario guardar el estado de las lectura de cada libro de los usuarios. Los estados posibles son: “Por leer”, “Leyendo” y “Leído”. Además se debe almacenar el porcentaje que el usuario lleva leído del libro, la fecha de inicio y fin de la lectura.
Los usuarios pueden enviar una solicitud de amistad a otros usuarios. Cada solicitud de amistad tiene un estado que puede ser “Pendiente”, “Aceptada” o “Rechazada”. Es necesario almacenar la fecha en la que se envió la solicitud y la fecha en la que se aceptó o rechazó.
2 Créditos
Muchos de los ejercicios y diagramas que aparecen en este texto han sido extraídos de las siguientes referencias:
Diseño de Bases de Datos. Problemas resueltos. Ra-Ma. Adoración de Miguel. Paloma Martínez. Elena Castro.
Desarrollo de Bases de Datos. Casos prácticos desde el análisis a la implementación. Ra-Ma. Dolores Cuadra. Elena Castro. Ana Mª Iglesias. Paloma Martínez. Fco. Javier Calle. César de Pablo. Harith Al-Jumaily. Lourdes Moreno. Sonia García Manzano. José Luis Martínez. Jesica Rivero. Isabel Segura.
Introducción a la Informática. Licenciado en ADE. UPV. Miguel Rebollo, Javier Martín, Álvaro Hermida y Mario González.
¡Gracias por compartir vuestro trabajo! :)
3 Licencia
Esta
página forma parte del curso
Bases de Datos de
José Juan Sánchez Hernández y
su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.