Enunciado #
Diseña una base de datos para gestionar conciertos, promotores, artistas y asistentes. Además de organizar el cartel de cada concierto, debe guardar los datos de las entradas adquiridas.
Datos que debes almacenar #
- Promotor:
id_promotor (entero, identificador, autoincremental), nombre (texto), email (texto) y tlfn (texto).
- Concierto:
id_concierto (entero, identificador, autoincremental), titulo (texto), fecha (fechahora), lugar (texto), precio_base (decimal) y estado (enum; programado, en_progreso, finalizado o cancelado).
- Artista:
id_artista (entero, identificador, autoincremental), nombre (texto) y nacionalidad (texto, opcional).
- Asistente:
id_asistente (entero, identificador, autoincremental), nombre (texto) y email (texto).
- Los datos de cada entrada:
fecha_compra (fechahora), precio (decimal) y numero_asiento (texto).
Reglas del negocio #
- Cada concierto es organizado por un único promotor y un promotor puede organizar varios conciertos. Añade
id_promotor (entero) donde corresponda.
- Cada concierto cuenta con uno o varios artistas y cada artista puede tocar en varios conciertos a lo largo de su carrera.
- Un asistente puede acudir a varios conciertos y un concierto puede recibir a varios asistentes.
- Para este ejercicio, cada asistente adquiere como máximo una entrada para cada concierto. La fecha de compra, el precio pagado y el asiento pertenecen a esa entrada.
- El precio pagado se conserva aunque posteriormente cambie el precio base del concierto.
- Un asiento no puede asignarse a dos asistentes del mismo concierto. Todos los conciertos de esta práctica tienen asientos numerados.
- Todos los campos son obligatorio menos nacionalidad del artista.
- Usa ConciertoArtista para el cartel, con
id_concierto e id_artista (enteros) como PK compuesta.
- Usa Entrada para la asistencia, con
id_concierto e id_asistente (enteros) como PK compuesta, además de sus tres datos propios. Diseña las seis tablas y sus relaciones.
La combinación (id_concierto, numero_asiento) debe ser única. Como el editor solo ofrece unicidad por campo, no marques numero_asiento como único global: impediría reutilizar el mismo número en distintos conciertos.
Esta restricción compuesta y la existencia de al menos un artista por concierto deben controlarse al implementar la base de datos.