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

  1. Verificar disponibilidad:

    • Comprobar existencia del vuelo y tramo en LEG_INSTANCE.
    • Revisar disponibilidad de asientos en SEAT_RESERVATION.
  2. Crear la reserva:

    • Insertar un nuevo registro en SEAT_RESERVATION con detalles del pasajero y vuelo.
  3. Actualizar la ocupación del vuelo:

    • Reducir asientos disponibles en LEG_INSTANCE.
  4. 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_id debe existir.

Parte 3: Tipos de Restricciones de Integridad

RestricciónTipo
FLIGHT tiene Flight_number únicoClave primaria
FLIGHT_LEG asociado a FLIGHTIntegridad referencial
LEG_INSTANCE corresponde a FLIGHT_LEGIntegridad referencial
SEAT_RESERVATION asociada a pasajero y vueloIntegridad referencial
Avión debe existir en AIRPLANEIntegridad referencial
Fecha de llegada no anterior a salidaRestricción de dominio
Asientos reservados no superan capacidadRestricción de negocio

Parte 4: Restricciones de Integridad Referencial

  1. FLIGHT_LEG.Flight_numberFLIGHT.Flight_number
  2. LEG_INSTANCE.Flight_number, LEG_INSTANCE.Leg_numberFLIGHT_LEG.Flight_number, FLIGHT_LEG.Leg_number
  3. SEAT_RESERVATION.Flight_number, SEAT_RESERVATION.Leg_number, SEAT_RESERVATION.DateLEG_INSTANCE.Flight_number, LEG_INSTANCE.Leg_number, LEG_INSTANCE.Date
  4. FARE.Flight_numberFLIGHT.Flight_number
  5. LEG_INSTANCE.Airplane_idAIRPLANE.Airplane_id
  6. AIRPLANE.Airplane_typeAIRPLANE_TYPE.Airplane_type
  7. CAN_LAND.Airplane_type, CAN_LAND.Airport_codeAIRPLANE_TYPE.Airplane_type, AIRPORT.Airport_code
  8. FLIGHT_LEG.Departure_airportAIRPORT.Airport_code
  9. FLIGHT_LEG.Arrival_airportAIRPORT.Airport_code
  10. SEAT_RESERVATION.Passenger_idPASSENGER.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.