An Airline Reservations System
An Airline Reservations System
An Airline Reservations System
Project description
Each flight has a limited number of available seats. There are number of flights that go from/to
different cities at different dates and time.
The system shall maintain a table for the list of available flights where each row within the table
has the following fields: Flight number, Departure city, Destination City, Departure date,
Departure time, Arrival date, Arrival Time, Capacity, and Available seats.
The System shall maintain a table for the customers where each row
within the table has the following fields: Confirmation number, Customer Name, Customer
Address, and Departure Flight Number. The values within this table will be created when the
user makes a reservation.
Requirements
Draw the ER using Edraw MAx :
The relationships between the entities are as follows:
• A flight can have many reservations, and a reservation can involve only one flight.
This is a one-to-many relationship between flights and reservations.
• A customer can have many reservations, and a reservation can involve only one
customer. This is a one-to-many relationship between customers and reservations.
• A flight can be reserved by many customers, and a customer can reserve many
flights. This is a many-to-many relationship between flights and customers, which
is represented by the "reservations" entity.
The schema
flights
flight_number departure_city destination_city departure_date departure_time arrival_date arrival_time price capacity available_seats
customers
confirmation_number customer_name customer_address departure_flight_number
reservations
confirmation_number flight_number reservation_date customer_name
INSERT INTO flights VALUES ('FL18', 'Reyadh', 'Australia', '03-Jun-2023', '10:00', '03-Jun-2023', '01:00', 200,100, 2);
INSERT INTO flights VALUES ('FL19', 'UK', 'Maskat', '03-Jun-2023', '07:00', '03-Jun-2023', '09:00',300, 50, 30);
INSERT INTO flights VALUES ('FL20', 'Reyadh', 'Australia', '03-Jun-2023', '10:00', '03-Jun-2023', '01:00', 200,100, 60);
INSERT INTO flights VALUES ('FL33', 'Reyadh', 'Australia',SYSDATE, '10:00', SYSDATE, '01:00', 200,100, 2);
INSERT INTO flights VALUES ('FL34', 'UK', 'Maskat', SYSDATE, '07:00', SYSDATE, '09:00',300, 50, 30);
INSERT INTO flights VALUES ('FL35', 'Reyadh', 'Australia', SYSDATE, '10:00', SYSDATE, '01:00', 200,100, 60);
INSERT INTO customers VALUES (1, 'Sami Ahmed', '1 Main St, Anytown, KSA', 'FL1');
INSERT INTO customers VALUES (2, 'Naser Alshehri', '4 O St, Anytown, KSA', 'FL2');
INSERT INTO customers VALUES (3, 'Hamad Sultan', '7 M St, Anytown, KSA', 'FL3');
INSERT INTO customers VALUES (4, 'Sarah Nsr', '3 P St, Anytown, UKSA', 'FL1');
INSERT INTO customers VALUES (5, 'Aml Kareem', '6 E St, Anytown, KSA', 'FL2');
INSERT INTO customers VALUES (6, 'Amr Kasem', '9 C St, Anytown, KSA', 'FL3');
INSERT INTO customers VALUES (7, 'Mike Davis', '5 O St, Anytown, KSA', 'FL1');
INSERT INTO customers VALUES (8, 'Karen Wong', '1 m St, Anytown, KSA', 'FL2');
INSERT INTO customers VALUES (9, 'Tom Wilson', '4 P St, Anytown, KSA', 'FL3');
INSERT INTO customers VALUES (10, 'Emily Rodriguez', 'L St, Anytown, KSA', 'FL1');
INSERT INTO customers VALUES (11, 'Sami Ahmed', '1 Main St, Anytown, KSA', 'FL4');
INSERT INTO customers VALUES (12, 'Naser Alshehri', '4 O St, Anytown, KSA', 'FL5');
INSERT INTO customers VALUES (13, 'Hamad Sultan', '7 M St, Anytown, KSA', 'FL13');
INSERT INTO customers VALUES (14, 'Sarah Nsr', '3 P St, Anytown, UKSA', 'FL20');
INSERT INTO customers VALUES (15, 'Aml Kareem', '6 E St, Anytown, KSA', 'FL6');
INSERT INTO customers VALUES (16, 'Amr Kasem', '9 C St, Anytown, KSA', 'FL7');
INSERT INTO customers VALUES (17, 'Mike Davis', '5 O St, Anytown, KSA', 'FL8');
INSERT INTO customers VALUES (18, 'Karen Wong', '1 m St, Anytown, KSA', 'FL9');
INSERT INTO customers VALUES (19, 'Tom Wilson', '4 P St, Anytown, KSA', 'FL15');
INSERT INTO customers VALUES (20, 'Emily Rodriguez', 'L St, Anytown, KSA','FL14');
INSERT INTO customers VALUES (21, 'Sarah Nsr', '3 P St, Anytown, UKSA', 'FL20');
INSERT INTO customers VALUES (22, 'Aml Kareem', '6 E St, Anytown, KSA', 'FL10');
INSERT INTO customers VALUES (23, 'Amr Kasem', '9 C St, Anytown, KSA', 'FL11');
INSERT INTO customers VALUES (24, 'Mike Davis', '5 O St, Anytown, KSA', 'FL12');
INSERT INTO customers VALUES (25, 'Karen Wong', '1 m St, Anytown, KSA', 'FL13');
INSERT INTO customers VALUES (26, 'Karen Wong', '1 m St, Anytown, KSA', 'FL16');
INSERT INTO flights VALUES ('FL40', 'Reyadh', 'Australia','07-Jun-2023', '10:00', '07-Jun-2023', '01:00', 200,10, 7);
INSERT INTO flights VALUES ('FL41', 'UK', 'Maskat', '07-Jun-2023', '07:00', '07-Jun-2023', '09:00',300, 10, 6);
INSERT INTO flights VALUES ('FL42', 'Reyadh', 'Australia', '07-Jun-2023', '10:00', '07-Jun-2023', '01:00', 200,5, 3);
INSERT INTO customers VALUES (50, 'Mike Davis', '5 O St, Anytown, KSA', 'FL40');
INSERT INTO customers VALUES (51, 'Karen Wong', '1 m St, Anytown, KSA', 'FL41');
INSERT INTO customers VALUES (52, 'Karen Wong', '1 m St, Anytown, KSA', 'FL42');
--4.How many customers come on the flights that which arrived yesterday?
SELECT COUNT(*) FROM customers
INNER JOIN reservations ON customers.confirmation_number = reservations.confirmation_number
INNER JOIN flights ON reservations.flight_number = flights.flight_number
WHERE flights.arrival_date = SYSDATE-1;
--5.Display the arrival date for the last flight that is coming from USA
SELECT arrival_date FROM flights
WHERE departure_city = 'USA'
ORDER BY arrival_date DESC ;
--6.Display the nearest flight’s departure date that have two Seats together for Australia?
SELECT 1 departure_date FROM flights
WHERE destination_city = 'Australia' AND available_seats >= 2 AND departure_date > SYSDATE
ORDER BY ABS(departure_date) ASC;
--7.Show all flights for today and the availability of seats, on each flight.
SELECT flight_number, departure_city, destination_city, departure_date, available_seats
FROM flights
WHERE departure_date = SYSDATE;
--8.display flights that are less than half full and its departure date before three days.
SELECT flight_number, departure_city, destination_city, departure_date, available_seats, capacity
FROM flights
WHERE available_seats < capacity/2 AND departure_date = '03-Jun-2023';
--9.for each flight display customer name, total number of seats he is reserves.
SELECT flights.flight_number, customers.customer_name,
COUNT(reservations.confirmation_number) AS reserved_seats
FROM reservations
INNER JOIN flights ON reservations.flight_number = flights.flight_number
INNER JOIN customers ON reservations.confirmation_number = customers.confirmation_number
GROUP BY flights.flight_number, customers.customer_name;
--10.Perform a report that display flights that have the following condition:
• (0.25 flight capacity < number of reserved seats < 0.5 flight capacity)
• departures date after 4 dayes.
• In order to encourage customers to buy tickets on that flight, Let the system perform a discount
of %30 of their original price.