Report Airport Management System
Report Airport Management System
Report Airport Management System
Airport Management
System
Table of Contents
1. PROJECT DESCRIPTION .................................................................................................... 2
1.1 Requirements of the system: ................................................................................................. 2
2. ENTITIES .......................................................................................................................... 5
3. MAPPING ER DIAGRAM TO RELATIONAL SCHEMA ........................................................... 6
4. ER/EER DIAGRAM ............................................................................................................ 7
5. RELATIONAL SCHEMA ...................................................................................................... 8
6. NORMALIZATION RULES ON DATABASE ........................................................................... 9
7. NORMALISED RELATIONAL SCHEMA ............................................................................... 10
8. SQL ................................................................................................................................. 11
9. STORED PROCEDURE ...................................................................................................... 24
10. TRIGGERS .................................................................................................................... 29
11. BUSINESS RULES ......................................................................................................... 35
1. PROJECT DESCRIPTION
Airport Code
Ø Hence, depending on airline, source, destination, journey date and most importantly class,
which a passenger chooses fare or price of an air ticket is determined.
Ø A passenger can book one or multiple tickets. The day on which he books an air ticket is a
booking date. Similarly, a passenger can cancel one or multiple tickets. The day on which he
cancels an air ticket is cancellation date and there will be a surcharge that a passenger has to
pay after cancelling a ticket.
Ø Every airport has employees working for it.
o Every employee is identified by SSN. Every employee has an information such name,
address, phone, age, sex, salary.
o Employees in the role of administrative support, engineer, traffic controller and airport
authority work at the airport.
o Every airline needs administrative support staff to keep the office running smoothly. The
different positions include secretaries, data entry workers, receptionists,
communications and PR specialists and human resources department.
o There are different types of engineers who work specifically with information
technologies, electronics, flight structure, environmental regulations, etc.
o Traffic Monitor works in different shifts such as day or night.
o There are different positions that airport authorities might work at such as manager,
attendee, assistant, pilot, etc.
Ø Employees working in the role of administrative support may help passengers with various tasks
such as booking a flight ticket, solving passenger's questions, etc.
Assumptions:
Ø We are not considering privately managed airports. We are only considering publicly owned
airports.
Several Categories of airports:
These are publicly owned airports that serve aircrafts which provide scheduled
passenger service.
Reference: http://www.noisequest.psu.edu/aboutairports-typesofairports.html
2. ENTITIES
CITY
AIPORT
AIRLINE
FLIGHT
PASSENGER
TICKET
EMPLOYEE
Figure 1: Airport Management System ER Diagram
4. ER/EER DIAGRAM
Name of the
Entity 1 Entity 2 Cardinality
Relationship
5. RELATIONAL SCHEMA
FUNCTIONAL DEPENDECIES
PASSPORTNO -> FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX Violates 2NF
PID -> FLIGHT_CODE Violates 2NF
DATE_OF_BOOKING, SOURCE, DESTINATION, CLASS -> PRICE Violates 3NF
DATE_OF_CANCELLATION -> SURCHARGE Violates 3NF
JOBTYPE -> SALARY Violates 3NF
10
8. SQL
11
12
13
STATUS VARCHAR(10),
DURATION VARCHAR2(30),
FLIGHTTYPE VARCHAR(10),
LAYOVER_TIME VARCHAR2(30),
NO_OF_STOPS INT,
AIRLINEID VARCHAR(3),
PRIMARY KEY(FLIGHT_CODE),
FOREIGN KEY(AIRLINEID) REFERENCES AIRLINE(AIRLINEID) ON DELETE CASCADE);
-- Inserting values into Table: FLIGHT—
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('AI2014','BOM','DFW','02:10','03:15','On-time','24hr','Connecting',3,1,'AI');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('QR2305','BOM','DFW','13:00','13:55','Delayed','21hr','Non-stop',0,0,'QR');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('EY1234','JFK','TPA','19:20','20:05','On-time','16hrs','Connecting',5,2,'EY');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('LH9876','JFK','BOM','05:50','06:35','On-time','18hrs','Non-stop',0,0,'LH');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('BA1689','FRA','DEL','10:20','10:55','On-time','14hrs','Non-stop',0,0,'BA');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('AA4367','SFO','FRA','18:10','18:55','On-time','21hrs','Non-stop',0,0,'AA');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('QR1902','IXC','IAH','22:00','22:50','Delayed','28hrs','Non-stop',5,1,'QR');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
14
VALUES('BA3056','BOM','DFW','02:15','02:55','On-time','29hrs','Connecting',3,1,'BA');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('EK3456','BOM','SFO','18:50','19:40','On-time','30hrs','Non-stop',0,0,'EK');
INSERT INTO FLIGHT(FLIGHT_CODE, SOURCE, DESTINATION, ARRIVAL, DEPARTURE, STATUS, DURATION,
FLIGHTTYPE, LAYOVER_TIME, NO_OF_STOPS, AIRLINEID)
VALUES('9W2334','IAH','DEL','23:00','13:45','On-time','23hrs','Direct',0,0,'9W');
-- Inserting Table: PASSENGER1--
CREATE TABLE PASSENGER1
(PID INT NOT NULL,
PASSPORTNO VARCHAR(10) NOT NULL,
PRIMARY KEY(PID, PASSPORTNO));
-- Inserting values in table: PASSENGER1--
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(1,'A1234568');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(2,'B9876541');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(3,'C2345698');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(4,'D1002004');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(5,'X9324666');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(6,'B8765430');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(7,'J9801235');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(8,'A1122334');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(9,'Q1243567');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(10,'S1243269');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(11,'E3277889');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(12,'K3212322');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(13,'P3452390');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(14,'W7543336');
INSERT INTO PASSENGER1(PID, PASSPORTNO) VALUES(15,'R8990566');
-- Inserting Table: PASSENGER2--
CREATE TABLE PASSENGER2
(PASSPORTNO VARCHAR(10) NOT NULL,
FNAME VARCHAR2(20),
M VARCHAR(1),
LNAME VARCHAR2(20),
ADDRESS VARCHAR2(100),
PHONE INT,
15
AGE INT,
SEX VARCHAR(1),
PRIMARY KEY(PASSPORTNO));
--Inserting VALUES IN TABLE: PASSENGER2--
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('A1234568','ALEN','M','SMITH','2230 NORTHSIDE, APT 11, ALBANY, NY',8080367290,30,'M');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('B9876541','ANKITA','V','AHIR','3456 VIKAS APTS, APT 102,DOMBIVLI,
INDIA',8080367280,26,'F');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('C2345698','KHYATI','A','MISHRA','7820 MCCALLUM COURTS, APT 234, AKRON,
OH',8082267280,30,'F');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('D1002004','ANKITA','S','PATIL','7720 MCCALLUM BLVD, APT 1082, DALLAS,
TX',9080367266,23,'F');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('X9324666','TEJASHREE','B','PANDIT','9082 ESTAES OF RICHARDSON, RICHARDSON,
TX',9004360125,28,'F');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('B8765430','LAKSHMI','P','SHARMA','1110 FIR HILLS, APT 903, AKRON, OH',7666190505,30,'F');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('J9801235','AKHILESH','D','JOSHI','345 CHATHAM COURTS, APT 678, MUMBAI,
INDIA',9080369290,29,'M');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('A1122334','MANAN','S','LAKHANI','5589 CHTHAM REFLECTIONS, APT 349 HOUSTON,
TX',9004335126,25,'F');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('Q1243567','KARAN','M','MOTANI','4444 FRANKFORD VILLA, APT 77, GUILDERLAND,
NY',9727626643,22,'M');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('S1243269','ROM','A','SOLANKI','7720 MCCALLUM BLVD, APT 2087, DALLAS,
TX',9004568903,60,'M');
INSERT INTO PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS,PHONE,AGE,SEX)
VALUES('E3277889','John','A','GATES','1234 BAKER APTS, APT 59, HESSE,
GERMANY',9724569986,10,'M');
16
17
ADDRESS VARCHAR2(100),
PHONE INT,
AGE INT,
SEX VARCHAR(1),
JOBTYPE VARCHAR2(30),
ASTYPE VARCHAR2(30),
ETYPE VARCHAR2(30),
SHIFT VARCHAR2(20),
POSITION VARCHAR2(30),
AP_NAME VARCHAR2(100),
PRIMARY KEY(SSN),
FOREIGN KEY(AP_NAME) REFERENCES AIRPORT(AP_NAME) ON DELETE CASCADE);
-- Implementing Business Rule Using Check Constraint--
AGE OF AN EMPLOYEE WORKING FOR AN AIRPORT SHOULD NOT BE GREATER THAN 65--
ALTER TABLE EMPLOYEE1
ADD CONSTRAINT AGE_LIMIT CHECK(AGE < 65);
-- Example Of Violation Of Check Constraint--
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(123456799,'RAM','M','SHARMA','731 HILL TOWN, ARLINGTON, TX',4356789365, 66,
'M','ADMINISTRATIVE SUPPORT','RECEPTIONIST','','','','Louisville International Airport');
-- Inserting values in table: EMPLOYEE1 --
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(123456789,'LINDA','M','GOODMAN','731 Fondren, Houston, TX',4356789345, 35,
'F','ADMINISTRATIVE SUPPORT','RECEPTIONIST','','','','Louisville International Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(333445555,'JOHNY','N','PAUL','638 Voss, Houston, TX',9834561995, 40, 'M','ADMINISTRATIVE
SUPPORT','SECRETARY','','','','Louisville International Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(999887777,'JAMES','P','BOND','3321 Castle, Spring, TX',9834666995, 50,
'M','ENGINEER','','RADIO ENGINEER','','','Louisville International Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(987654321,'SHERLOCK','A','HOLMES','123 TOP HILL, SAN Francisco,CA',8089654321, 47,
'M','TRAFFIC MONITOR','','','DAY','','San Francisco International Airport');
18
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(666884444,'SHELDON','A','COOPER','345 CHERRY PARK, HESSE,GERMANY',1254678903, 55,
'M','TRAFFIC MONITOR','','NIGHT','','','Frankfurt Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(453453453,'RAJ','B','SHARMA','345 FLOYDS, MUMBAI,INDIA',4326789031, 35, 'M','AIRPORT
AUTHORITY','','','','MANAGER','Chhatrapati Shivaji International Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(987987987,'NIKITA','C','PAUL','110 SYNERGY PARK, DALLAS,TX',5678904325, 33,
'F','ENGINEER','','AIRPORT CIVIL ENGINEER','','','Dallas/Fort Worth International Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(888665555,'SHUBHAM','R','GUPTA','567 CHANDANI CHOWK, DELHI, INDIA',8566778890, 39,
'M','ADMINISTRATIVE SUPPORT','DATA ENTRY WORKER','','','','Indira GandhiInternational Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(125478909,'PRATIK','T','GOMES','334 VITRUVIAN PARK, ALBANY, NY',4444678903, 56,
'M','TRAFFIC MONITOR','','DAY','','','John F. Kennedy International Airport');
INSERT INTO EMPLOYEE1(SSN, FNAME, M, LNAME, ADDRESS, PHONE, AGE, SEX, JOBTYPE, ASTYPE,
ETYPE, SHIFT, POSITION, AP_NAME)
VALUES(324567897,'ADIT','P','DESAI','987 SOMNATH, CHANDIGARH, INDIA',2244658909, 36,
'M','TRAFFIC MONITOR','','DAY','','','Chandigarh International Airport');
-- Inserting Table: EMPLOYEE2 --
CREATE TABLE EMPLOYEE2
(JOBTYPE VARCHAR2(30) NOT NULL,
SALARY INT,
PRIMARY KEY(JOBTYPE));
--INSERTING VALUES INTO TABLE: EMPLOYEE2 --
INSERT INTO EMPLOYEE2(JOBTYPE, SALARY)VALUES('ADMINISTRATIVE SUPPORT',50000);
INSERT INTO EMPLOYEE2(JOBTYPE, SALARY)VALUES('ENGINEER',70000);
INSERT INTO EMPLOYEE2(JOBTYPE, SALARY)VALUES('TRAFFIC MONITOR',80000);
INSERT INTO EMPLOYEE2(JOBTYPE, SALARY)VALUES('AIRPORT AUTHORITY',90000);
19
20
21
22
23
9. STORED PROCEDURE
CREATE OR REPLACE PROCEDURE DFWECONOMYPASSENGERS AS
CURSOR ECOPASSDETAILS is
select
al.AL_NAME,fl.FLIGHT_CODE,p2.FNAME,p2.LNAME,p2.PASSPORTNO,t.CLASS,t.DATE_OF_TRAVEL,t.DESTI
NATION,t.SOURCE,t.SEATNO,t.TICKET_NUMBER from Airline al,Flight fl,PASSENGER1 p1,PASSENGER2 p2
,PASSENGER3 p3,TICKET1 t
where al.AIRLINEID = fl.AIRLINEID
and p1.PID= p3.PID
and p1.PASSPORTNO =p2.PASSPORTNO
and fl.FLIGHT_CODE = p3.FLIGHT_CODE
and t.PASSPORTNO = p2.PASSPORTNO
and t.CLASS='ECONOMY' and t.DESTINATION='DFW';
PASSDETAILS ECOPASSDETAILS%rowtype;
BEGIN
Open ECOPASSDETAILS ;
LOOP
fetch ECOPASSDETAILS into PASSDETAILS;
EXIT WHEN ECOPASSDETAILS%NOTFOUND;
dbms_output.put_line (PASSDETAILS.AL_NAME || ' ' || PASSDETAILS.FLIGHT_CODE || ' ' ||
PASSDETAILS.FNAME || ' ' || PASSDETAILS.LNAME|| ' ' ||PASSDETAILS.PASSPORTNO || ' ' ||
PASSDETAILS.CLASS || ' ' || PASSDETAILS.SOURCE || ' ' || PASSDETAILS.SEATNO || ' ' ||
PASSDETAILS.TICKET_NUMBER);
END LOOP;
close ECOPASSDETAILS;
END DFWECONOMYPASSENGERS;
--Testing in sql developer: Oracle db--
SET SERVEROUTPUT ON
exec DFWECONOMYPASSENGERS();
24
Figure 2: Stored Procedure 1
Figure 3: Stored Procedure 1
25
CREATE OR REPLACE PROCEDURE FLIGHTSBYSTATUS
(IN_STATUS IN VARCHAR2) AS
CURSOR fSTATUS is
SELECT DISTINCT F.FLIGHT_CODE ,AL.AL_NAME ,F.ARRIVAL,F.DEPARTURE,
F.SOURCE,F.DESTINATION,F.STATUS,F.FLIGHTTYPE
FROM AIRLINE AL,AIRPORT AP, FLIGHT F
WHERE AL.AIRLINEID=F.AIRLINEID
AND F.STATUS =IN_STATUS;
FlightStatus fSTATUS%rowtype;
BEGIN
Open fSTATUS ;
LOOP
fetch fSTATUS into FlightStatus;
EXIT WHEN fSTATUS%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (FlightStatus.FLIGHT_CODE || ' ' || FlightStatus.AL_NAME || ' ' ||
FlightStatus.ARRIVAL || ' ' || FlightStatus.departure|| ' ' ||FlightStatus.Source || ' ' ||
FlightStatus.DESTINATION || ' ' || FlightStatus.STATUS || ' ' || FlightStatus.FLIGHTTYPE);
END LOOP;
CLOSE fSTATUS;
END FLIGHTSBYSTATUS;
--Testing in sql developer: Oracle db--
SET SERVEROUTPUT ON
exec FLIGHTSBYSTATUS('Delayed');
-- or--
SET SERVEROUTPUT ON
exec FLIGHTSBYSTATUS('On-time');
26
Figure 4: Stored Procedure 2
Figure 5: Stored Procedure 2
27
Figure 6: Stored Procedure 2
Figure 7: Stored Procedure 2
28
10. TRIGGERS
10.1 Trigger for, when a flight is delayed, it is logged into different tables.
29
Figure 8: Trigger 1
Figure 9: Trigger 1
30
Figure 10: Trigger 1
Figure 11: Trigger 1
31
10.2 Trigger to update TICKET_PRICE_HISTORY table when the price of the air ticket is
updated in TICKET2 table.
32
Figure 12: Trigger 2
Figure 13: Trigger 2
33
Figure 14: Trigger 2
Figure 15: Trigger 2
34
Figure 16: Business Rule 1
35
11.2 Age of an employee working at any airport should not be greater than 65.
Figure 17: Business Rule 2
36