Ejercicio 39: Gestión de Reservas en una Base de Datos de Aerolínea
Este ejercicio se centra en la gestión de reservas dentro de un sistema de base de datos de una aerolínea. Se trabajará en la actualización de reservas, la identificación de restricciones y el análisis de integridad de datos en el esquema relacional.
Objetivos
- Implementar operaciones de actualización de reservas en una base de datos.
- Verificar y aplicar restricciones de integridad de datos.
- Analizar y clasificar restricciones de integridad referencial.
Entrada de Datos
El esquema de la base de datos de la aerolínea incluye las siguientes entidades y relaciones clave:
- FLIGHT (Vuelo): Identificado por
Flight_number. - FLIGHT_LEG (Tramo del Vuelo): Incluye
Leg_number. - LEG_INSTANCE (Instancia de Tramo de Vuelo): Relacionado con fechas específicas.
- FARE (Tarifa): Define costos asociados.
- SEAT_RESERVATION (Reserva de Asiento): Registra pasajeros y asientos.
- AIRPLANE (Avión): Identificado por
Airplane_id. - AIRPLANE_TYPE (Tipo de Avión): Define modelos y capacidades.
- AIRPORT (Aeropuerto): Identificado por
Airport_code.
Parte 1: Operación de Actualización de Reserva
a. Operaciones necesarias para registrar una nueva reserva
Verificar disponibilidad:
- Comprobar existencia del vuelo y tramo en
LEG_INSTANCE. - Revisar disponibilidad de asientos en
SEAT_RESERVATION.
- Comprobar existencia del vuelo y tramo en
Crear la reserva:
- Insertar un nuevo registro en
SEAT_RESERVATIONcon detalles del pasajero y vuelo.
- Insertar un nuevo registro en
Actualizar la ocupación del vuelo:
- Reducir asientos disponibles en
LEG_INSTANCE.
- Reducir asientos disponibles en
Confirmar la reserva:
- Registrar la tarifa asociada y emitir el ticket.
Ejemplo de consulta SQL
-- TODO: Implementar
INSERT INTO SEAT_RESERVATION (passenger_id, flight_number, leg_number, date, seat_number)
VALUES (12345, 'AA101', 1, '2025-06-15', '12A');
Parte 2: Restricciones a Verificar
b. Restricciones en la operación de reserva
- Disponibilidad de asiento: No reservar un asiento ocupado.
- Existencia del vuelo y tramo: Validar en
LEG_INSTANCE. - Consistencia de horarios: Hora de llegada posterior a la de salida.
- Compatibilidad del avión con el aeropuerto: Validar en
CAN_LAND. - Integridad de datos del pasajero:
Passenger_iddebe existir.
Parte 3: Tipos de Restricciones de Integridad
| Restricción | Tipo |
|---|---|
FLIGHT tiene Flight_number único | Clave primaria |
FLIGHT_LEG asociado a FLIGHT | Integridad referencial |
LEG_INSTANCE corresponde a FLIGHT_LEG | Integridad referencial |
SEAT_RESERVATION asociada a pasajero y vuelo | Integridad referencial |
Avión debe existir en AIRPLANE | Integridad referencial |
| Fecha de llegada no anterior a salida | Restricción de dominio |
| Asientos reservados no superan capacidad | Restricción de negocio |
Parte 4: Restricciones de Integridad Referencial
FLIGHT_LEG.Flight_number→FLIGHT.Flight_numberLEG_INSTANCE.Flight_number, LEG_INSTANCE.Leg_number→FLIGHT_LEG.Flight_number, FLIGHT_LEG.Leg_numberSEAT_RESERVATION.Flight_number, SEAT_RESERVATION.Leg_number, SEAT_RESERVATION.Date→LEG_INSTANCE.Flight_number, LEG_INSTANCE.Leg_number, LEG_INSTANCE.DateFARE.Flight_number→FLIGHT.Flight_numberLEG_INSTANCE.Airplane_id→AIRPLANE.Airplane_idAIRPLANE.Airplane_type→AIRPLANE_TYPE.Airplane_typeCAN_LAND.Airplane_type, CAN_LAND.Airport_code→AIRPLANE_TYPE.Airplane_type, AIRPORT.Airport_codeFLIGHT_LEG.Departure_airport→AIRPORT.Airport_codeFLIGHT_LEG.Arrival_airport→AIRPORT.Airport_codeSEAT_RESERVATION.Passenger_id→PASSENGER.Passenger_id
Conclusión
Este ejercicio permite reforzar conceptos clave en bases de datos, como operaciones de actualización complejas, verificación de restricciones de integridad, identificación de claves y relaciones entre entidades, y análisis de restricciones de negocio en sistemas de reserva.
Entrega esperada
- Descripción detallada de cada parte del ejercicio.
- SQL que represente la inserción de reservas.
- Análisis de restricciones con explicaciones.