You are on page 1of 19

Cruise Travel Management

Introduction
The system is based on Cruise Travel management. Cruise Travel managementsystem
primarily deals with management of Cruise port, Cruise lines and passengers.The system
provides broad overview of underlying operational factors that influencethe Cruise port
management. Every Cruise line is identified uniquely by Cruise linecode Cruise line also has
three-digit code which is printed on ticket. Cruise linecompanies serve Ships. Every Ship is
uniquely identified by a Ship codeShip serves passengers and carries passengers from source
to destination.A passenger is uniquely identified by a passenger id and a passport number.
For a passenger to travel by a Ship, he needs a ticket. A ticket is used to confirm
that anindividual has reserved a seat on a Ship. A passenger can book one or multipletickets.
The day on which he books ticket is a booking date Every Cruise port hasemployees working
for it.
Page
4
/
20
44-PES1201801716-Jagadish

Highlight
 Add Note
 Share Quote

ADDownload to read ad-free.

Cruise Travel Management


Data Model
Page
5
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


Page
6
/
20
44-PES1201801716-Jagadish
ADDownload to read ad-free.

Cruise Travel Management


The binary Relationships in above system are:
1)one-to-one
(1) A city has only one Cruise port.
2) one-to-many
(1) Cruise line has multiple Ships, that is many Ships belong to the sameCruise
line company.(2) A Ship carries many passengers.(3) A passenger can book one or more
tickets.(4) A passenger can cancel one or more tickets.
3)

many-to-many
(1)

A Cruise port may have many Cruise line offices.


FD and Normalization
FUNCTIONAL DEPENDENCIES:
INRELATIONCITY:CNAME -> {STATE,COUNTRY}PRIMARY KEY-
CNAMEIN RELATION CRUISEPORT:CP_NAME->{STATE,COUNTRY,CNAME}PRIMARY KEY-
CP_NAMEFOREIGN KEY- CNAMEIN RELATION CRUISELINE: CRUISELINEID ->
{CL_NAME,THREE_DIGIT_CODE} PRIMARY KEY- CRUISELINEIDIN RELATION
SHIP: SHIP_CODE ->
{SOURCE,DESTINATION,DEPARTURE,STATUS,DURATION,SHIPTYPE,CRUISELINEID}PRIM
ARY KEY – SHIP_CODEFOREIGN KEY-
CRUISELINEIDIN RELATION PASSENGER:PASSPORTNO -> {PID,
FNAME,M,LNAME,ADDRESS,AGE,SEX,SHIP_CODE}Page
7
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


PID -> {PASSPORTNO,FNAME,M,LNAME,ADDRESS, AGE,SEX,SHIP_CODE}Here, both PID
and PASSPORTNO uniquely identifies the tuple.PRIMARYKEY-PASSPORTNOSECONDARY
KEY-PIDFOREIGN KEY- SHIP_CODEIN RELATION TICKET:TICKET_NUMBER ->
{SOURCE,DESTINATION,DATE_OF_BOOKING,DATE_OF_TRAVEL,SEATNO,CLASS ,PID,PA
SSPORTNO}PRIMARY KEY- TICKET_NUMBERFOREIGN KEYS- PID, PASSPORTNOIN
RELATION EMPLOYEE:SSN-> {FNAME,M,LNAME,ADDRESS ,AGE,SEX,JOBTYPE,
SALARY,CP_NAME}PRIMARY KEY – SSNFOREIGN KEY – CP_NAME IN
RELATION CONTAINS:all attributes are foreign keys which combine to form primary
key.PRIMARY KEY-{CP_NAME, CRUISELINEID}IN RELATION SERVES:all attributes are
foreign keys which combine to form primary key.PRIMARY KEY- {SSN, PID, PASSPORTNO}
here, keys are determined by the fact that all attributes of the relation can bedetermined
from that key. NORMALIZATION:1) All relations are in 1st normal form as domain of each
attributes is simple andindivisible.2) Following functional dependencies violate 2nd
normal form:PASSPORTNO->FNAME,M,LNAME,ADDRESS, AGE,SEXPID->
SHIP_CODEHere, non- prime attributes are partially dependent on candidate keys and
henceviolate 2nd normal form.3) Following functional dependencies violate 3rd normal form:
Page
8
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


a) TICKET_NUMBER -
>DATE_OF_BOOKING,SOURCE,DESTINATION,CLASSDATE_OF_BOOKING,SOURCE,DESTI
NATION,CLASS -> PRICEB) SSN -> JOBTYPEJOBTYPE -> SALARYHere, non prime
attributes are transitively dependent on the primary key andhence violates 3rd normal
form.2nd NormalisationDecompose and set up a new relation for each partial key with its
dependentattribute . Make sure to keep a relation with its original primary key and
anyattributes that are fully functionally dependent on it.3rd NormalisationDecompose and set
up a new relation that includes the non key attribute thatfunctionally determine other non
key attribute.TABLES AFTER NORMALIZATION:
CITY
(CNAME, STATE, COUNTRY)
CRUISE PORT
(CP_NAME,STATE,COUNTRY,CNAME)
CRUISE LINE
(CRUISELINEID, CL_NAME, THREE_DIGIT_CODE)
CONTAINS
(CRUISELINEID, CP_NAME)
SHIP
(SHIP_CODE, SOURCE, DESTINATION, DEPARTURE, STATUS, DURATION,SHIPTYPE,
CRUISELINEID)
PASSENGER1
(PID, PASSPORTNO)
PASSENGER2
(PASSPORTNO, FNAME, M, LNAME, ADDRESS, AGE, SEX)
PASSENGER3
(PID, SHIP_CODE)Page
9
/
20
44-PES1201801716-Jagadish
ADDownload to read ad-free.

Cruise Travel Management


TICKET1
(TICKET_NUMBER, SOURCE, DESTINATION,
DATE_OF_BOOKING,DATE_OF_TRAVEL, SEATNO, CLASS, PID, PASSPORTNO)
TICKET2
(DATE_OF_BOOKING, SOURCE, DESTINATION, CLASS, PRICE)
EMPLOYEE1
(SSN, FNAME, M, LNAME, ADDRESS, AGE, SEX, JOBTYPE, POSITION,CP_NAME)
EMPLOYEE2
(JOBTYPE, SALARY)
SERVES
(SSN, PID, PASSPORTNO)
LOSSLESS JOIN PROPERTY:
a) FOR
RELATIONPASSENGER(PID,PASSPORTNO,FNAME,M,LNAME,ADDRESS ,AGE,SEX,SHIP_C
ODE)PASSENGER1(PID,
PASSPORTNO)PASSENGER2(PASSPORTNO,FNAME,M,LNAME,ADDRESS ,AGE,SEX)PASSE
NGER3(PID,SHIP_CODE)1) Union of attributes of all sub relations equals the attributes of
main relation.2) PASSENGER1 Ω PASSENGER2 = PASSPORTNOPASSENGER1 Ω
PASSENGER3 = PID WHICH is not equal to null3) PASSPORTNO is a candidate key of
PASSENGER2 as PASSPORTNO->FNAME,M,LNAME,ADDRESS, AGE,SEX.PID is a
candidate key of PASSENGER3 as PID->SHIP_CODE
hence, the following decomposition satisfies lossless join property.
b) FOR RELATIONEMPLOYEE (SSN,FNAME,M,LNAME,ADDRESS,
AGE,SEX,JOBTYPE,SALARY,CP_NAME) EMPLOYEE1
(SSN,FNAME,M,LNAME,ADDRESS,AGE,SEX,JOBTYPE,POSITION,CP_NAME)
EMPLOYEE2 (JOBTYPE,SALARY)1) Union of attributes of all sub relations equals the
attributes of main relation.2)EMPLOYEE1 Ω EMPLOYEE2 = JOBTYPE which is not
null3)JOBTYPE is a candidate key of sub relation EMPLOYEE2 as JOBTYPE-> SALARY
hence, this decomposition of relation is also lossless.
Page
10
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


DDL
CREATING TABLES IN POSTGRESQLWITH CONSTRAINTS:

CREATE TABLE CITY(CNAMEVARCHAR(15)NOT NULL,STATE VAR


CHAR(15),COUNTRYVARCHAR(30),PRIMARY KEY(CNAME));CREATE
TABLE CRUISEPORT(CP_NAMEVARCHAR(100)NOT NULL,STATE V
ARCHAR(15),COUNTRYVARCHAR(30),CNAMEVARCHAR(15),PRIMAR
Y KEY(CP_NAME),FOREIGN
KEY(CNAME)REFERENCES CITY(CNAME)ON DELETE
CASCADE);CREATE TABLE CRUISELINE(CRUISELINEIDVARCHAR(3
)NOT NULL,CL_NAMEVARCHAR(50),THREE_DIGIT_CODEVARCHAR(3
),PRIMARY KEY(CRUISELINEID));CREATE TABLE CONTAINS(CRUI
SELINEIDVARCHAR(3)NOT NULL,CP_NAMEVARCHAR(100)NOT NUL
L,PRIMARY KEY(CRUISELINEID, CP_NAME),FOREIGN
KEY(CRUISELINEID)REFERENCES CRUISELINE(CRUISELINEID)ON
DELETE CASCADE,FOREIGN
KEY(CP_NAME)REFERENCES cruiseport(CP_NAME)ON DELETE
CASCADE);CREATE TABLE SHIP(SHIP_CODEVARCHAR(10)NOT NU
LL,SOURCEVARCHAR(3),DESTINATIONVARCHAR(3),DEPARTUREVA
RCHAR(10),STATUS VARCHAR(10),DURATIONVARCHAR(30),SHIPTY
PEVARCHAR(10),CRUISELINEIDVARCHAR(3),PRIMARY KEY(SHIP_C
ODE),
Page
11
/
20
44-PES1201801716-Jagadish
ADDownload to read ad-free.

Cruise Travel Management


FOREIGN
KEY(CRUISELINEID)REFERENCES CRUISELINE(CRUISELINEID)ON
DELETE
CASCADE);CREATE TABLE PASSENGER1(PIDINT NOT NULL,PASS
PORTNOVARCHAR(10)NOT NULL,PRIMARY KEY(PID,
PASSPORTNO));CREATE TABLE PASSENGER2(PASSPORTNOVARC
HAR(10)NOT NULL,FNAMEVARCHAR(20),MVARCHAR(1),LNAMEVAR
CHAR(20),ADDRESS VARCHAR(100),AGEINT,SEXVARCHAR(1),PRIM
ARY KEY(PASSPORTNO));CREATE TABLE PASSENGER3(PIDINT N
OT NULL,SHIP_CODEVARCHAR(10),PRIMARY KEY(PID),FOREIGN
KEY(SHIP_CODE)REFERENCES SHIP(SHIP_CODE)ON DELETE
CASCADE);CREATE TABLE EMPLOYEE1(SSNINT NOT NULL,FNAM
EVARCHAR(20),MVARCHAR(1),LNAMEVARCHAR(20),ADDRESS VAR
CHAR(100),AGEINT,SEXVARCHAR(1),JOBTYPEVARCHAR(30),POSITI
ONVARCHAR(30),CP_NAMEVARCHAR(100),PRIMARY KEY(SSN),FOR
EIGN KEY(CP_NAME)REFERENCES cruiseport(CP_NAME)ON
DELETE
CASCADE);CREATE TABLE EMPLOYEE2(JOBTYPEVARCHAR(30)NO
T NULL,POSITIONVARCHAR(30),SALARYINT,PRIMARY KEY(JOBTY
PE));
Page
12
/
20
44-PES1201801716-Jagadish
ADDownload to read ad-free.
Cruise Travel Management
CREATE TABLE SERVES(SSNINT NOT NULL,PIDINT NOT NULL,P
ASSPORTNOVARCHAR(10)NOT NULL,PRIMARY KEY(SSN, PID,
PASSPORTNO),FOREIGN
KEY(SSN)REFERENCES EMPLOYEE1(SSN)ON DELETE
CASCADE,FOREIGN KEY(PID,
PASSPORTNO)REFERENCES PASSENGER1(PID, PASSPORTNO)ON
DELETE
CASCADE);CREATE TABLE TICKET1(TICKET_NUMBERINT NOT N
ULL,SOURCEVARCHAR(3),DESTINATIONVARCHAR(3),DATE_OF_BOO
KINGDATE,DATE_OF_TRAVELDATE,SEATNOVARCHAR(5),CLASSVAR
CHAR(15),PIDINT,PASSPORTNOVARCHAR(10),FOREIGN KEY(PID,
PASSPORTNO)REFERENCES PASSENGER1(PID, PASSPORTNO)ON
DELETE
CASCADE);CREATE TABLE TICKET2(DATE_OF_BOOKINGDATE NO
T NULL,SOURCEVARCHAR(3)NOT NULL,DESTINATIONVARCHAR(3)
NOT NULL,CLASSVARCHAR(15)NOT NULL,PRICEINT,PRIMARY KE
Y(DATE_OF_BOOKING, SOURCE, DESTINATION, CLASS));
CHECK CONSTRAINTS:a)AGE of each employee should be less than 67
yearsALTER TABLE EMPLOYEE1ADD CONSTRAINT AGE_LIMIT CHECK(AGE
< 67); b)length of the ticket number should be less than or equal to 13
digits.ALTER TABLE TICKET1ADD CONSTRAINT
TICKET_NO_LENGTHCHECK(LENGTH(CAST(TICKET_NUMBER AS TEXT))<=13);
Page
13
/
20
44-PES1201801716-Jagadish
ADDownload to read ad-free.

Cruise Travel Management


REFERENTIAL INTEGRITY CONSTRAINT:FOREIGN KEY(SSN) REFERENCES
EMPLOYEE1(SSN) ON DELETECASCADE ON UPDATE CASCADE,FOREIGN KEY(PID,
PASSPORTNO) REFERENCES PASSENGER1(PID,PASSPORTNO) ON DELETE CASCADE ON
UPDATE CASCADEReferential integrity constraints are taken care for all relations having
foreign key.When the primary key value is deleted, all child foreign key values are also
deletedsince delete operation is CASCADE. ON UPDATE CASCADE means the new
valueof primary key will be updated to foreign key.
Triggers
a) Whenever ticket price is updated, old prices are stored in ticket price history table
Page
14
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


Page
15
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


b) When a Ship is delayed it is inserted in a separate table for easy analysis
Page
16
/
20
44-PES1201801716-Jagadish
ADDownload to read ad-free.

Cruise Travel Management


SQL Queries
a) SIMPLE QUERIES:

1) Selecting all Cruise ports of India


SELECT CP_NAMEFROM CRUISEPORT WHERE COUNTRY='India'
2) Selecting SHIPCODE from table SHIP where source is ´BOM´
SELECT SHIP_CODEFROM SHIPWHERE SOURCE='BOM';
3) List of the Passengers their AGE is >=30
SELECT FNAMEFROM PASSENGER2WHERE AGE>=30;
Page
17
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


b) COMPLEX QUERIES:1) Retrieve the names of all employees who have the same jobtype
as Employee´NIKITA´.2) Retrieve the names of all passengers who have booked their tickets
in ECONOMYCLASS.
Page
18
/
20
44-PES1201801716-Jagadish

ADDownload to read ad-free.

Cruise Travel Management


c) AGGREGATE FUNCTIONS:1) Retrieve job type and number of employees in each job type
where each job typehas more than 1 employee2)Retrieve number of passengers who have
booked their tickets in Business class
Page
19
/
20
44-PES1201801716-Jagadish
ADDownload to read ad-free.

Cruise Travel Management


Conclusion
Doing this project was a wonderful experience for me. It helped me instrengthening my
concepts in Unit 3 and Unit 4 of DBMS course. It gave meconfidence in creating any mini
world example as a database and relations. It alsotaught me various concepts like
normalisation, testing for lossless join property andcreating triggers and complex queries.It
has some capabilities, like the system designed only for publicly owned cruise ports not
considering privately managed cruise port and a city has at most one cruise port. I would like
to add feature of cancelation and also want to add more attributesto table ticket for additional
features.

You might also like