Hola a todos, hoy os voy a dejar una serie de ejercicios para practicar modelo relacional.
Antes de empezar, recuerda que tienes el curso completo de modelo entidad relacion en este post:
https://discoduroderoer.es/curso-modelo-relacional-para-disenar-bases-de-datos
Contenido de los ejercicios
Realizamos los siguiente 5 ejercicios de diferentes temáticas transformando los ejercicios que hicimos en su día de MER.
Te dejo el Github con todo el contenido: https://github.com/DiscoDurodeRoer/curso-disenio-base-de-datos
Ejercicio 1: Alquiler de vehículos

Empezamos por la tabla cliente con sus atributos y su relación reflexiva.
Por la relación reflexiva, se crea un nuevo campo que apunta al codigo del cliente. Puede ser nulo.

Formato grafica:

Formato tabla:

Continuamos con reserva y su relación con cliente.
No se añade el campo calculado precio_total. Fecha fin podría ser nulo pero por el enunciado original se podría entender como que no es necesario.
La relación, como es 1:N, en la tabla reserva añadimos el codigo del cliente al ser donde esta el maximo N.

Formato gráfica:

Formato tabla:

Continuamos con la relación entre reserva y coche.
El atributo precio_alquiler de la relación se va a la tabla coche al tener la N como máximo en la relación 1:N
Se añade en la tabla coche, el atributo codigo_reserva por la relación 1:N
Mantenemos el codigo del cliente y el codigo de la agencia de la reserva.

Formato gráfica:

Formato tabla:

Continuamos con la relación entre reserva y agencia.
El codigo de la agencia se va a la tabla reserva, por la relación 1:N
Mantenemos el codigo de cliente en reserva.

Formato gráfica:

Formato tabla:

Por último, vamos con la relación entre coche y garaje.
Añadiremos en la tabla coche el codigo del garaje por la relación 1:N
Mantenemos el codigo de la reserva del coche.

Formato gráfica:

Formato tabla:
Solución
Formato gráfica:

Formato tabla:
Video
Ejercicio 2: Asociaciones de ONGs

Empecemos por la generalización participante.
Crearemos una tabla para cada entidad, cada uno con sus atributos asociados.
Trabajador y socio, tendrán un atributo DNI primario y foráneo que apunta a participante.
Asalariado y voluntario, tendrán un atributo DNI primario y foráneo que apunta a trabajador.

Formato gráfica:

Formato tabla:

Veamos la relación entre asociación y socio.
Crearemos una nueva tabla intermedia entre asociacion y socio al ser una relación N:M.
Se añaden los atributos de la relación a esta nueva tabla, excepto aportacion_anual por ser un campo calculado.
Mantenemos el DNI del socio que apunta a participante.

Formato gráfica:

Formato tabla:

Continuamos con la relación entre asociación y trabajador.
En la tabla trabajador, añadiremos el campo CIF_asociacion por tener el máximo N en la relación 1:N
Mantenemos el DNI del trabajador que apunta a participante.

Formato gráfica:

Formato tabla:

Seguimos con la relación entre asociación y proyecto.
Como proyecto es una entidad débil dependiente de asociación, su tabla contendrá el campo CIF_asociacion que será primaria y foránea.
En la tabla proyecto, le añadimos el campo proyecto_base que hace referencia al campo codigo de su propia tabla. Puede ser nulo.

Formato gráfica:

Formato tabla:
Solución
Formato gráfica:

Formato tabla:
Video
Ejercicio 3: Servicios de urgencia

Empezamos con la generalización empleado.
Creamos una tabla por cada entidad, cada uno con sus atributos.
Conductor_ambulancia y Personal_sanitario tendran un campo codigo que será foráneo y primario.

Formato gráfica:

Formato tabla:

Veamos la relación entre ambulancia y conductor_ambulancia.
El campo instrumesntal_medico de ambulancia, lo pondremos como un campo mas.
Como tenemos una relación 1:1, podemos mover el atributo identificativo de una tabla a otra.
En este caso, el codigo del conductor la moveremos a la ambulancia. No podrá ser nulo.
Si lo hiciéramos al revés, el campo matricula en conductor de ambulancia podría ser nulo.
Mantenemos el codigo del conductor que apunta a empleado.

Formato gráfica:

Formato tabla:
Continuamos con la relación entre Personal_sanitario y grupo.
Al ser una relación 1:N, en la tabla personal_sanitario se añadirá el codigo del grupo.
El atributo puesto, se moverá a la tabla personal_sanitario.
Mantenemos el codigo del sanitario que apunta a empleado.

Formato gráfica:

Formato tabla:

Continuamos con la relación entre conductor_ambulancia y hospital.
Al tener una relación N:M, crearemos una nueva tabla con los campos identificativos de ambas tablas y los atributos de la relación.
En este caso, vamos a añadir un campo único primario y los campos conductor_ambulancia y codigo_hospital serán solo foráneos.
Añadimos este campo, porque un conductor puede hacer varios viajes al mismo hospital en diferentes fechas.
El campo especialidades de hospital será un campo mas.
Mantenemos el codigo del conductor que apunta a empleado.

Formato gráfica:

Formato tabla:
Seguimos con la relación entre Personal_sanitario y hospital que hace referencia a las guardias.
Pasará igual que en el anterior, como un sanitario puede hacer diferentes guardias en el mismo hospital en diferentes fechas.
Crearemos un nuevo campo primario y el codigo_sanitario y codigo_hospital serán foráneos.
Mantenemos el codigo del sanitario que apunta a empleado.

Formato gráfica:

Formato tabla:

Por último, la relación entre Personal_sanitario y hospital que hace referencia al personal que trabaja en los hospitales.
Pasará igual que en el anterior, como un sanitario puede trabajar en el mismo hospital en diferentes fechas.
Crearemos un nuevo campo primario y el codigo_sanitario y codigo_hospital serán foráneos.
Mantenemos el codigo del sanitario que apunta a empleado.

Formato gráfica:

Formato tabla:
Solución
Formato gráfica:

Formato tabla:
Video
https://youtu.be/PJ45lGg_Ryg
Ejercicio 4: Biblioteca de enciclopedias

Empezamos con la relación entre enciclopedia y tomo.
Como la tabla tomo es dependiente de la tabla enciclopedia, añadimos en la tabla tomo el campo ISBN de enciclopedia.

Formato gráfica:

Formato tabla:

Seguimos con la relación entre Tomo y Armario.
Como es una relación 1:N, las claves identificativas de armario se añadirán a la tabla tomo.
Mantenemos los campos primarios de tomo.

Formato gráfica:

Formato tabla:

Vamos a continuar con la generalización Persona
Crearemos una tabla por cada entidad, cada uno con sus atributos.
Alumno y Empleado tendrán un campo DNI que será primaria y foránea que apunta a Persona.
Gestion y Mantenimiento tendrán un campo DNI que será primaria y foránea que apunta a Empleado.

Formato gráfica:

Formato tabla:

Continuamos con la relación entre tarjeta y alumno.
Como la tabla tarjeta es dependiente de la tabla alumno, añadiremos el DNI del alumno a la tabla Tarjeta.
Mantenemos el DNI del alumno que apunta a Persona.

Formato gráfica:

Formato tabla:
Continuamos con la relación entre tarjeta y Gestion.
Como es una relación 1:N, añadiremos a la tabla Tarjeta el campo DNI del administrativo.
Mantenemos el DNI del administrativo que apunta a Empleado.
Mantenemos los campos primarios y foráneos de la tabla tarjeta.

Formato gráfica:

Formato tabla:
Ahora que hemos avanzando en nuestro modelo relacional, vamos con la relación entre la tarjeta y el tomo.
Como es una relación N:M, crearemos una tabla intermedia con los campos de la relación.
En este caso, podremos fecha como primaria ademas de los campos identificativos de ambas tablas.
Mantenemos los campos primarios y foráneos de la tabla tarjeta y tomo.

Formato gráfica:

Formato tabla:
Por último, veamos la relación entre armario y mantenimiento.
Como es una relación N:M, crearemos una nueva tabla con los campos identificativos de ambas tablas.
En este caso, añadiremos un campo primario y los campos identificativos de armario y mantenimiento serán foráneos.
Mantenemos el DNI del administrativo que apunta a Empleado.

Formato gráfica:

Formato tabla:
Solución
Formato gráfica:

Formato tabla:
Video
https://youtu.be/O28-SojFhK0
Ejercicio 5: Campeonato de ajedrez

Empezaremos con la generalización Participante.
Crearemos una tabla por cada entidad, cada una con sus atributos.

Formato gráfica:

Formato tabla:
Continuamos con la relación entre campeonato y participante.
Como es una relación N:M, crearemos una nueva tabla con los campos identificativos.
El campo tipo, se mueve a la nueva tabla.
En este caso, no es necesario crear un nuevo campo, ya que un participante solo va una vez a un campeonato concreto.

Formato gráfica:

Formato tabla:
Seguimos con la relación entre participante y pais.
Como es una relación 1:N, se añade el campo codigo_pais a la tabla participante.
En la tabla pais, se añade el campo representante que apunta al campo codigo de la propia tabla por la relación reflexiva.
Este campo representante puede ser nulo.

Formato gráfica:

Formato tabla:
Seguimos con la relación entre hotel y participante.
Como es una relación N:M, crearemos una nueva tabla con los campos identificativos de participante y hotel.
Como un participante puede alojarse en el mismo hotel en diferentes fechas (diferentes campeonatos).
Mantenemos los campos foráneos de Participante.

Formato gráfica:

Formato tabla:
Continuamos con la relación entre el hotel y la sala.
Como es una relación 1:N, se añade el campo nombre del hotel a la tabla sala.
Como es también una relación de existencia, no será primario, será foráneo.

Formato gráfica:

Formato tabla:
Continuamos con la relación entre sala y partida.
Como es una relación 1:N, pasamos el codigo de la sala a la tabla partida.
El atributo entradas pasa a la tabla Partida.
Mantenemos los campos foráneos de Sala.
No se añade el campo jornada, en su lugar se añade el anio, mes y dia.

Formato gráfica:

Formato tabla:
Continuamos con la relación entre Jugador y Partida.
Como es una relación N:M, crearemos una nueva tabla con los campos identificativos de jugador y partida
Se añade el campo color a la nueva tabla.
Mantenemos los campos foráneos de Partida.
Mantenemos el campo n_socio de Jugador que apunta de Participante.

Formato gráfica:

Formato tabla:
Continuamos con la relación entre arbitro y partida.
Como es una relación 1:N, añadimos el campo arbitro a la tabla Partida.
Mantenemos los campos foráneos de Partida.
Mantenemos el campo n_socio de Arbitro que apunta de Participante.

Formato gráfica:

Formato tabla:
Por último, veamos la relación Partida y movimiento.
Como hay una relación de dependencia de movimiento con partida, se añade el campo codigo_partida a movimiento, siendo primario y foráneo.
Los campos foráneos se mantiene en partida.
El campo movimientos se representará como un campo normal.

Formato gráfica:

Formato tabla:
Solución
Formato gráfica:

Formato tabla:
Video
https://youtu.be/aqLQxQuscwk
Te dejo el video con los ejercicios.
Espero que os sea de ayuda, si tenéis dudas, preguntad, estamos para ayudarte.
Deja una respuesta