Sei sulla pagina 1di 8

Q1 A ERD

B. Table: Manager (mId, mName, mAdd, mPhone, mEmail, mSal)

Table: Hotel (hNum, hNoOfRooms, hPhone, hAdd, mId)

Table: Caretaker (ctId, ctName, ctAdd, ctPhone, ctEmail, ctSal, hNum)

Table: Room (hNum, rNum, rRate, rSize, rOccupied, rLoc)


Table: Customer (cNum, cSSN, cName, cCreditCart, cStartDate, cEndDate, cAmtOwing,
cAdd, hNum, rNum)

C. Since cAmtOwing can be caculate by ( cEndDate - cStartDate ) * rRate, it can be removed from out table. So
Table: Customer changed to

Table: Customer (cNum, cSSN, cName, cCreditCart, cStartDate, cEndDate, cAdd, hNum, rNum)

ERD

D. drop table Manager;

drop table Hotel;

drop table Caretaker;

drop table Room;

drop table Customer;

CREATE TABLE Manager(

mId int,

mName varchar (50),

mAdd varchar (50),

mPhone char (7),

mEmail varchar (100),

mSal number (7,2),

CONSTRAINT ManagerPK primary key (mId),

CONSTRAINT CheckmId CHECK (mId >= 111111 AND mId <= 999999),

CONSTRAINT CheckmPhone CHECK (mPhone >= 2222222 AND mPhone <= 9999999));
CREATE TABLE Hotel(

hNum int,

hNoOfRooms int,

hPhone char (7) unique,

hAdd varchar (50),

mId int,

CONSTRAINT HotelPK primary key (hNum),

CONSTRAINT CheckhNoOfRooms CHECK (hNoOfRooms >= 0 AND hNoOfRooms <= 200),

CONSTRAINT CheckhPhone CHECK (hPhone >= 2202222 AND hPhone <= 9909999));

CREATE TABLE Caretaker(

ctId int,

ctName varchar (50),

ctAdd varchar (50),

ctPhone char (7),

ctEmail varchar (200),

ctSal number (7,2),

hNum int,

CONSTRAINT CaretakerPK primary key (ctId),

CONSTRAINT CheckctId CHECK (ctId >= 111111 AND ctId <= 999999),

CONSTRAINT CheckctPone CHECK (ctPhone >= 2222222 AND ctPhone <= 9999999),

CONSTRAINT CheckctSal CHECK (ctSal > 20000 AND ctSal < 40000));

CREATE TABLE Room(

hNum int,

rNum int,

rRate number (5,2),

rSize int,

rOccupied char (5),

rLoc int,

CONSTRAINT RoomPK primary key (hNum, rNum),


CONSTRAINT CheckrNum CHECK (rNum > 0 AND rNum <= 200),

CONSTRAINT CheckrRate CHECK (rRate >= 50),

CONSTRAINT CheckrSize CHECK (rSize >= 2 AND rSize <=4),

CONSTRAINT CheckrOccupied CHECK (rOccupied = 'false' OR rOccupied = 'true'),

CONSTRAINT CheckrLoc CHECK (rLoc > 0 AND rLoc <= 100));

CREATE TABLE Customer(

cNum int,

cSSN char (9) unique,

cName varchar (50),

cCreditCart varchar (25),

cStartDate DATE,

cEndDate DATE,

cAdd varchar (50),

hNum int,

rNum int,

CONSTRAINT CustomerPK primary key (cNum),

CONSTRAINT CheckcSSN CHECK (cSSN > 660000000 AND cSSN <= 609999999));

ALTER TABLE Hotel

ADD CONSTRAINT HotelFK foreign key (mId)

reference Manager (mId);

ALTER TABLE Caretaker

ADD CONSTRAINT CaretakerFK foreign key (hNum)

reference Hotel (hNum);

ALTER TABLE Room

ADD CONSTRAINT RoomFK foreign key (hNum)

reference Hotel (hNum);

ALTER TABLE Customer

ADD CONSTRAINT Customer FK foreign key (hNum)

reference Hotel (hNum);

ALTER TABLE Customer


ADD CONSTRAINT Customer FK foreign key (rNum)

reference Room (rNum);

Answer: Q2. 1

SELECT office, city, region, mgr, target, sales

FROM offices

Order By office ASC;

Answer: Q2. 2

SELECT DESCRIPTION, PRICE * QTY_ON_HAND as DOLLAR_VALUE

FROM PRODUCTS

Order By DOLLAR_VALUE DESC;


Answer: Q2. 3

SELECT ORDER_NUM, ORDER_DATE, CUST, REP

FROM ORDERS

WHERE PRODUCT = 'XK47' OR PRODUCT = '773C';

Answer: Q2. 4

SELECT name, age

FROM salesreps

WHERE rep_office IN (12,21,13);

Answer: Q2. 5

SELECT name

FROM salesreps

WHERE name LIKE '_o%';

Answer: Q2. 6
SELECT empl_num, name

FROM salesreps

WHERE rep_office IS NULL;

Answer: Q2. 7

SELECT name

FROM salesreps

WHERE name LIKE '%Smith';

Answer: Q2. 8

SELECT DISTINCT title

FROM salesreps

WHERE title IS NOT NULL;

Answer: Q2. 9

SELECT DISTINCT DESCRIPTION

FROM PRODUCTS

WHERE length(DESCRIPTION) >= 6 AND length(DESCRIPTION) < 10;

Answer: Q2. 10

SELECT ORDER_NUM, Rep.name as"Salesreps", company, CustRep.name AS "Customer_rep"

FROM ORDERS, customers, salesreps Rep, Salesreps CustRep

WHERE (rep = rep.empl_num) AND (cust = cust_num) AND (cust_rep = CustRep.empl_num);

Answer: Q3. 1

SELECT MFR, PRODUCT, COMPANY, AMOUNT

FROM ORDERS, customers

WHERE CUST IN(2111,2112,2105,2119) AND (AMOUNT < 5000) AND (CUST = CUST_NUM)

ORDER BY COMPANY ASC;


Answer: Q3. 2

SELECT empl_num, name, ORDER_NUM

FROM salesreps, ORDERS, customers

WHERE (CUST_REP != REP) AND (empl_num = REP) AND (CUST = CUST_NUM)

ORDER BY name ASC;

Answer: Q3. 3

SELECT CUST_NUM, COMPANY, CREDITLIMIT, ORDER_NUM, AMOUNT

FROM CUSTOMERS, ORDERS

WHERE CUST_NUM = CUST AND (CREDITLIMIT - AMOUNT <= 10000) AND (CREDITLIMIT -
AMOUNT >= 0)

ORDER BY ORDER_NUM;

Answer: Q3. 4

SELECT Rep.name as "Salesreps", Mgr.name as "Manager"

FROM salesreps Mgr, salesreps Rep

WHERE (Rep.manager = Mgr.empl_num) AND (Rep.age >= Mgr.age);

Answer: Q3. 5

SELECT name, CITY

FROM offices, salesreps

WHERE (salesreps.sales < quota) AND (offices.sales < target) AND (office = rep_office);

Answer: Q3. 6

SELECT DISTINCT name, empl_num, hire_date


FROM salesreps, ORDERS

WHERE sales > quota OR (empl_num = rep AND (CUST = 2117 OR CUST = 2111 OR CUST = 2101))

ORDER BY empl_num ASC;

Answer: Q3. 7

SELECT ORDER_NUM, company, CUST_REP, REP_OFFICE, CITY

FROM Customers, Offices, Salesreps, Orders

WHERE (CUST = CUST_NUM) AND (CUST_REP = empl_num) AND (REP_OFFICE = office) AND (mgr !=
REP) AND (AMOUNT > 25000);

Answer: Q3. 8

SELECT DISTINCT Rep.name as "Salesreps", Mgr.name as "Manager", Rep.empl_num

FROM ORDERS, salesreps Rep, Salesreps Mgr, Customers, Offices

WHERE CUST = CUST_NUM AND CUST_REP = Rep.empl_num AND Mgr.empl_num = Rep.manager AND
(rep != Mgr.empl_num OR (Mgr.rep_office = office AND city IN('Denver', 'New York')));

Answer: Q3. 9

SELECT PRODUCT_ID, DESCRIPTION, CUST_NUM, ORDER_NUM, ORDER_DATE

FROM PRODUCTS, customers, ORDERS

WHERE (PRODUCT = PRODUCT_ID) AND (CUST = CUST_NUM) AND (AMOUNT < 1000)

ORDER BY ORDER_DATE ASC;

Answer: Q3. 10

SELECT DISTINCT Rep.name as "Salesreps", Mgr.name as "Manager"

FROM salesreps Rep, salesreps Mgr, ORDERS

WHERE (REP = Rep.manager) AND (Mgr.empl_num = Rep.manager);

Potrebbero piacerti anche