STA TRAVEL AUSTRALIA Rumana Islam HD Assignment 3, Autumn 2007

Download Report

Transcript STA TRAVEL AUSTRALIA Rumana Islam HD Assignment 3, Autumn 2007

STA TRAVEL AUSTRALIA

Rumana Islam HD Assignment 3, Autumn 2007

STA Travel Database

  This Database application was inspired by the ‘STA Travel Australia’ website.

The Database contains details about Airline, Airplane, Flight and Ticket.  It also contains information of the user booking tickets and details of the passengers a user books tickets for.  The database is limited to the reserving and purchasing of tickets and does not include other special services and deals offered by STA Travel

STA Travel Database ERD

1:m Relationship

User – Reservation Users

UsersID UTitle UFirstName USurname UDOB UNumber UMobileNumber UEmailAddress Reserves

Reservation

ReservationID UserID ReservationDate Foreign key

User Reservation

1 2 3 UsersID UTitle UFirstName … Ms Mr Mr … Rumana John Alfred … Other columns … … … … UserID 1 2 3 4 5 … ReservationID ReservationDate 1 1 1 1 2 2007-06-28 2007-06-28 2007-06-29 2007-06-29 2007-06-02 …

m:m Relationship

Flight-Passenger Flight

FlightID AirplaneID FlightNumber Origin Destination DepartureDate ReturnDate DepartureTime ReturnTime Has

PassFlight

PassengerID FlightID PFSeatNumber PFServiceClass PFType Part of

Flight

2 3 Flight 1 ..

FlightNumber SQ432 SQ241 QF350 … Origin Sydney Singapore Sydney … Destination Singapore Dhaka New York … Other Columns … … … …

Passenger

PassengerID 1 2 … PTitle Ms Ms ..

PFirstName Rumana Rehnuma … OtherColumns ..

..

… 2 3 PassengerID 1 1

Passenger

PassengerID ReservationID PTitle PFirstName PSurname PPassportNumber PDOB PHomeNumber PMobileNumber PStreet PSuburb PCity PState PPostCode PCountry

PassFlight m:m relationship

1 1 FlightID 1 2 PFSeatNumber 53J 44M 53K 53L Other Columns … … … …

Single Table Query

Selecting a few items from the Flight

SELECT FlightNumber, Origin, Destination FROM Flight; flightnumber | origin | destination --------------+-----------+------------ SQ432 | Sydney | Singpore SQ241 | Singapore | Dhaka QF350 | Sydney | New York CX520 | Sydney | London KL366 | Brisbane | Amsterdam KL363 | Melbourne | Munich TG201 | Sydney | Bangkok (7 rows)

NATURAL JOIN

Identifying users reserving tickets for passengers and when?

SELECT UFirstName, PFirstName, PPassportNumber, ReservationDate FROM Users NATURAL JOIN Reservation NATURAL JOIN Passenger; ufirstname | pfirstname | ppassportnumber | reservationdate ------------+------------+-----------------+---------------- Rumana | Rumana | L898902C | 2007-06-28 Rumana | Rehnuma | L923034Z | 2007-06-28 Rumana | Rafiqul | N123489B | 2007-06-29 Rumana | Milie | B947321F | 2007-06-29 John | James | L629374P | 2007-06-02 Alfred | Alfred | L102571G | 2007-06-07 Jessica | Jessica | L581290X | 2007-06-10 Adam | Adam | K437920F | 2007-06-12 Lara | Lara | L902257D | 2007-06-25 (9 rows)

NATURAL JOIN (Cross Product)

Identifying users reserving tickets for passengers and when

SELECT UFirstName, PFirstName,PPassportNumber, ReservationDate FROM Users, Reservation, Passenger Where Users.UsersID = Reservation.UsersID AND Reservation.ReservationID=Passenger.ReservationID; ufirstname | pfirstname | ppassportnumber | reservationdate ------------+------------+-----------------+---------------- Rumana | Rumana | L898902C | 2007-06-28 Rumana | Rehnuma | L923034Z | 2007-06-28 Rumana | Rafiqul | N123489B | 2007-06-29 Rumana | Milie | B947321F | 2007-06-29 John | James | L629374P | 2007-06-02 Alfred | Alfred | L102571G | 2007-06-07 Jessica | Jessica | L581290X | 2007-06-10 Adam | Adam | K437920F | 2007-06-12 Lara | Lara | L902257D | 2007-06-25 (9 rows)

GROUP BY

List PassengerID and group by number of flights a passenger is associated to

SELECT PassengerID, PFirstName, PSurname, count(*) as NumberofFlights FROM PassFlight natural join Passenger GROUP BY PassengerID,PFirstName, PSurname order by PassengerID; passengerid | pfirstname | psurname | numberofflights -------------+------------+----------+---------------- 1 | Rumana | Islam | 2 2 | Rehnuma | Islam | 1 3 | Rafiqul | Islam | 1 4 | Milie | Islam | 1 5 | James | Foster | 1 6 | Alfred | Lai | 1 7 | Jessica | Peterson | 1 8 | Adam | Brody | 1 9 | Lara | Roberts | 1 (9 rows)

Sub Query

Identify the cheapest ticket bought by passenger named ‘Rumana Islam’

SELECT Distinct TicketPrice, PaymentDate FROM Ticket NATURAL JOIN Payment WHERE CardHolderName = 'Rumana Islam' And TicketPrice <= all (SELECT TicketPrice FROM Ticket NATURAL JOIN Payment WHERE CardHolderName = 'Rumana Islam'); ticketprice | paymentdate -------------+------------ 1800 | 2007-06-28 (1 row)

Self Join

Finding two passengers who paid for their tickets using a MasterCard

SELECT c1.cardholdername, c2.cardholdername, c1.cardtype

FROM payment c1,payment c2 WHERE c1.cardtype = c2.cardtype

AND c1.cardtype='Mastercard' AND c2.cardtype='Mastercard' AND c1.ticketid>c2.ticketid; cardholdername | cardholdername | cardtype ------------------+----------------+----------- Jessica Peterson | John Smith | Mastercard (1 row)

Check Statements

Checking for Passenger Service Class type

CONSTRAINT PassFlight_PFServiceClass CHECK (PFServiceClass IN ('Economic','Business','First'))

Checking for Date of Birth

CONSTRAINT Users_UDOB CHECK (UDOB >= '1900-01-01')

Checking for Card Expiry Date

CONSTRAINT Payment_CardExpiryDate CHECK (CardExpiryDate BETWEEN '2007-01-01' AND '2015-01-01')

Action Statements

On Delete Restrict

CONSTRAINT Passenger_ReservationIDFK FOREIGN KEY (ReservationID) REFERENCES Reservation ON DELETE RESTRICT ON UPDATE CASCADE

On Delete Cascade

CONSTRAINT AirPlane_AirLineFK FOREIGN KEY (AirLineID) REFERENCES Airline ON DELETE CASCADE ON UPDATE CASCADE

Views

Creating a view for PassengerFlightDetails

CREATE VIEW PassengerFlightDetails (PFirstName, PSurname, FlightNumber, Origin, Destination, PFSeatNumber) AS SELECT PFirstName, PSurname, FlightNumber, Origin, Destination, PFSeatNumber FROM Passenger NATURAL JOIN PassFlight NATURAL JOIN Flight;

Selecting Details of Passenger flying the KLM Royal Dutch Airlines

SELECT PFirstName, PSurname, FlightNumber, Origin, Destination, PFSeatNumber FROM PassengerFlightDetails WHERE FlightNumber LIKE ‘KL%’; pfirstname | psurname | flightnumber | origin | destination | pfseatnumber ------------+----------+--------------+-----------+-------------+------------- Jessica | Peterson | KL366 | Brisbane | Amsterdam | 23B Adam | Brody | KL363 | Melbourne | Munich | 20F (2 rows)

Thank You!

QUESTIONS?