cs-3431-assignment-1/Cruise.sql

70 lines
2.1 KiB
SQL

-- Part 1; add drops so that we can keep re-running this file.
DROP TABLE Reservation;
DROP TABLE TravelAgent;
DROP TABLE Cruise;
DROP TABLE Company;
DROP TABLE Customer;
DROP SEQUENCE customerID_seq;
DROP SEQUENCE cruiseID_seq;
DROP SEQUENCE travelAgentID_seq;
DROP SEQUENCE reservationID_seq;
-- Part 2; Set up schema and insert data.
CREATE TABLE Customer(
customerID NUMBER,
firstName VARCHAR2(15),
lastName VARCHAR2(15),
address VARCHAR2(30),
phone NUMBER(10),
age NUMBER(3),
CONSTRAINT Customer_pk PRIMARY KEY(customerID),
CONSTRAINT Customer_U1 UNIQUE(firstName, lastName, phone),
CONSTRAINT Customer_phoneNumber_val CHECK (phone IS NOT NULL)
);
CREATE SEQUENCE customerID_seq;
CREATE TABLE Company(
companyName VARCHAR2(15),
stockSymbol CHAR(4),
website VARCHAR2(40),
CONSTRAINT Company_pk PRIMARY KEY(companyName),
CONSTRAINT Company_stockSymbol_U UNIQUE(stockSymbol)
);
CREATE TABLE Cruise(
cruiseID NUMBER,
cruiseName VARCHAR2(25),
departurePort VARCHAR2(20),
days NUMBER(2),
companyName VARCHAR2(15),
shipName VARCHAR2(30),
price NUMBER(7, 2),
CONSTRAINT Cruise_pk PRIMARY KEY(cruiseID),
CONSTRAINT Cruise_companyName_fk FOREIGN KEY (companyName) REFERENCES Company(companyName) ON DELETE SET NULL
);
CREATE SEQUENCE cruiseID_seq;
CREATE TABLE TravelAgent(
travelAgentID NUMBER,
firstName VARCHAR2(15),
lastName VARCHAR2(20),
title VARCHAR2(15),
salary NUMBER(7, 2),
CONSTRAINT TravelAgent_pk PRIMARY KEY(travelAgentID),
CONSTRAINT TravelAgent_title_val CHECK (title IN ('Assistant', 'Agent', 'Manager'))
);
CREATE SEQUENCE travelAgentID_seq;
CREATE TABLE Reservation(
reservationID NUMBER,
customerID NUMBER,
cruiseID NUMBER,
travelAgentID NUMBER,
travelDate DATE,
CONSTRAINT Reservation_pk PRIMARY KEY(reservationID),
CONSTRAINT Reservation_customerID_fk FOREIGN KEY (customerID) REFERENCES Customer(customerID) ON DELETE CASCADE,
CONSTRAINT Reservation_cruiseID_fk FOREIGN KEY (cruiseID) REFERENCES Cruise(cruiseID) ON DELETE CASCADE,
CONSTRAINT Reservation_travelAgentID_fk FOREIGN KEY (travelAgentID) REFERENCES TravelAgent(travelAgentID) ON DELETE CASCADE
);
CREATE SEQUENCE reservationID_seq;