Вы находитесь на странице: 1из 13

Group Project

TIS 1011 / TDB 2111


(Database Fundamentals / Database Systems)
Restaurant Management System
Prepared by
Peter Kong Kee Hieng,1122700625,peterkong26@gmail.com
Koo Er Wei,1122701112,kiddo0102@gmail.com
Low Kim Hoe,1122700369,lkh_bear94@hotmail.com

Business rule
a) One customer can make many orders.
b) Each order maybe in charged by one staff
c) One customers can reserve many tables and one table can be reserved by many
customers.
d) One order may include many foods
e) One order may include many drinks
f) One order has one receipt.

Data dictionary
Table Name

Attribute

Contents

Type

Format

Range

Required

Name

PK

FK

Or FK

reference
Table

CUSTOMER

Cus_ID

Customer ID

Integer

99999

Cus_Fname

Customer First

Varchar(20)

XXXXX

Cus_Lname

name
Varchar(20)

XXXX

Customer

Varchar(10)

0123456

T_NO

Phone
Table number

Integer

990
1

T_Status

Table status

Char(1)

Y or N

T_Date

Date table book

Date

dd-mm-

Staff_ID

Staff ID

Integer

99999

Staff_Fname

Staff First name

Varchar(20)

XXXXX

Staff_Lname

Staff Last Name

Varchar(20)

XXXXX

Staff_Phone

Staff Phone

Varchar(10)

0123456

Cus_ID

Customer ID

Integer

T_NO

Table no

Integer

Cus_ID

Customer ID

Integer

T_NO

Table

Integer

Customer Last
Cus_Phone

TABLE

PK

PK

PK

99999

PK

10

PK

99999

FK

CUSTOMER

10

Y
Y

FK
PK

TABLE

name

yy
STAFF

990
RESERVE

RECEIPT

R_ID

Receipt ID

Integer

1000000

R_DATE

Date of issue

Date

dd-mm-yy

R_TOTAL

Total price

Decimal(5,2)

000.00

FOOD

F_ID

Food ID

Varchar(10)

000

F_name

Food name

Varchar(20)

XXXXXX

F_type

Food type

Varchar(30)

XXXXX

F_price

Food price

Decimal(5,2)

000.00

F-rate

Food rate

Integer

PK

Y
Y

DRINK

INCLUDE

INCLUDES

ORDER

D_ID

Drink ID

Varchar(10)

000

D_name

Drink name

Varchar(20)

XXXXX

D_type

Drink type

Varchar(30)

XXXX

D_price

Drink price

Decimal(5,2)

000.00

D_rate

Drink rate

Integer

Y
Y

Order_ID

Order ID

Integer

0000

PK

F_ID

Food ID

Varchar(10)

000

PK

Order_ID

Order ID

Integer

0000

FK

F_ID

Food ID

Varchar(10)

000

FK

Order_ID

Order ID

Integer

0000

PK

D_ID

Drink ID

Varchar(10)

000

PK

Order_ID

Order ID

Integer

0000

FK

D_ID

Drink ID

Varchar(10)

000

FK

Order_ID

Order ID

Integer

0000

PK

CUS_ID

Customer ID

Integer

99999

FK

CUSTOMER

R_ID

Receipt ID

Integer

000000000

FK

RECEIPT

ORDER
FOOD

ORDER
DRINK

Staff_ID

Staff ID

Intger

99999

Screenshots

CREATE TABLE CUSTOMER


(
Cus_ID

integer PRIMARY KEY NOT NULL,

Cus_Fname varchar(20),
Cus_Lname varchar(20),
Cus_Phone varchar(10)
);
Insert into CUSTOMER values (10742,'Mohammad','Ali','0113478603');
Insert into CUSTOMER values (10764,'Simon','Chow Jie Han','0134589023');
Insert into CUSTOMER values (11865,'David','Humpson','0145678901');

FK

STAFF

Insert into CUSTOMER values (12345,'Mary','Douglas','0112345671');


Insert into CUSTOMER values (12367,'Jordan','Sia bing ming','0193759234');
select *from CUSTOMER;

CREATE TABLE TABLE


(
T_NO

integer PRIMARY KEY NOT NULL,

T_Status char(1) CHECK (T_Status IN ('Y','N')),


T_Date

date

);
Insert into TABLE values (1,'Y','12.11.2013');
Insert into TABLE values (2,'Y','12.12.2013');
Insert into TABLE values (3,'Y','19.12.2013');
Insert into TABLE values (4,'N','25.12.2013');
Insert into TABLE values (5,'N','1.1.2014');
select *from TABLE;

CREATE TABLE STAFF


(
Staff_ID integer PRIMARY KEY NOT NULL,
Staff_Fname varchar(20),
Staff_Lname varchar(20),
Staff_Phone varchar(10)
);
Insert into STAFF values (44557,'Alexander','Loo Kuan Hong','0123456789');
Insert into STAFF values (66347,'Benny','Chia Weng Hong','0162456718');
Insert into STAFF values (54321,'Celicia','Tan Siao Wei','0173674653');
select *from STAFF;

CREATE TABLE RESERVE


(
Cus_ID integer ,
T_NO

integer ,

FOREIGN KEY(Cus_ID) REFERENCES CUSTOMER ON DELETE RESTRICT,


FOREIGN KEY(T_NO) REFERENCES TABLE ON DELETE RESTRICT
);
Insert into RESERVE values (10742,2);
Insert into RESERVE values (10764,4);
select *from RESERVE;

CREATE TABLE RECEIPT(


R_ID integer PRIMARY KEY NOT NULL,
R_Date date,
R_total decimal(5,2));
Insert into RECEIPT values (1234567,'12.11.2013',53.26);
Insert into RECEIPT values (2345323,'12.12.2013',100.30);
select *from RECEIPT;

CREATE TABLE FOOD


(
F_ID varchar(10) PRIMARY KEY NOT NULL,
F_name varchar(20),
F_type varchar(30),
F_price decimal(5,2),
F_rate integer

);

Insert into FOOD values ('001','Spaggethi','Pasta',20.00,1);


Insert into FOOD values ('002','Bigoli','Pasta',24.50,3);
Insert into FOOD values ('003','French Bread','Bread',9.50,2);
Insert into FOOD values ('004','Honey OAT','Bread',5.00,4);
Insert into FOOD values ('005','Mushroom soup','Soup',15.50,5);
select *from FOOD;

CREATE TABLE DRINK(


D_ID

varchar(10) PRIMARY KEY NOT NULL,

D_name varchar(20),
D_type varchar(30),
D_price decimal(5,2),

D_rate integer);
Insert into DRINK values ('006','Pineapple Juice','Fruit',4.50,5);
Insert into DRINK values ('007','Mocha','Coffee',3.50,2);
Insert into DRINK values ('008','Cappuccino','Coffee',3.50,3);
Insert into DRINK values ('009','Apple Juice','Fruit',4.50,5);
Insert into DRINK values ('010','Hoe Garden','Alcohol',15.50,5);
select *from DRINK;

CREATE TABLE INCLUDE(


Order_ID integer,
F_ID

varchar(10),

FOREIGN KEY(Order_ID) REFERENCES ORDER ON DELETE RESTRICT,


FOREIGN KEY(F_ID) REFERENCES FOOD ON DELETE RESTRICT);
Insert into INCLUDE values('1','001');
Insert into INCLUDE values('2','002');

select *from INCLUDE;

CREATE TABLE INCLUDES(


Order_ID integer,
D_ID

varchar(10),

FOREIGN KEY(Order_ID) REFERENCES ORDER ON DELETE RESTRICT,


FOREIGN KEY(D_ID) REFERENCES DRINK ON DELETE RESTRICT);
Insert into INCLUDES values ('1','006');
Insert into INCLUDES values ('2','007');
select*from INCLUDES;

1)show the count,max and min

select max (D_price)


from DRINK;

select count (distinct F_name)


from FOOD
where F_price >=10.00;

select min (F_price)


FROM FOOD;

2)create procedure

CREATE PROCEDURE ADD_DISC(IN ADD DECIMAL(7,2))


BEGIN:
UPDATE FOOD
SET F_price = F_price + ADD
WHERE F_price >= 5.00;
CALL ADD_DISC(2.00)
SELECT*FROM FOOD;

create procedure R_disc(IN dec double)


Begin:
Update RECEIPT
SET R_total= R_total-(R_total*(dec/100))
WHERE R_total >= 50.00;
call R_disc(5);
Select *from RECEIPT;

3) create queries

UPDATE DRINK
SET D_price = D_price * 120 /100
WHERE D_price IN (SELECT D_price FROM DRINK WHERE D_price <=10.00);

select *from DRINK;

4)create view

CREATE VIEW menu_food AS


SELECT F_ID,F_name,F_type,F_price,F_rate
FROM FOOD;
SELECT *FROM menu_food;

CREATE VIEW menu_drink AS


SELECT D_ID,D_name,D_type,D_price,D_rate
FROM DRINK;
SELECT *FROM menu_drink;

5) show having claus and group

select D_name,avg(D_price)
from DRINK
GROUP BY D_name
HAVING AVG (D_price)>3;

select F_name,avg(F_price)
from FOOD
GROUP BY F_name
HAVING AVG (F_price) <10;

6)create trigger

CREATE TRIGGER foodrate


AFTER INSERT on FOOD
FOR each row mode db2sql
UPDATE FOOD
SET F_price = F_price - (F_price/100)
Where F_rate <3;
Insert into FOOD values ('006','Nasi Lemak','Rice',10.00,4);
Select *from FOOD;

7) additional feature

CREATE TABLE ORDER (


Order_ID
BY 1),
Cus_ID

integer NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT


integer,

R_ID

integer,

Staff_ID

integer,

PRIMARY KEY(Order_ID),
FOREIGN KEY(Cus_ID) REFERENCES CUSTOMER ON DELETE RESTRICT,
FOREIGN KEY(R_ID) REFERENCES RECEIPT ON DELETE RESTRICT,
FOREIGN KEY(Staff_ID) REFERENCES STAFF ON DELETE RESTRICT);
Insert into ORDER (Cus_ID,R_ID,Staff_ID)values(12367,1234567,44557);
Insert into ORDER (Cus_ID,R_ID,Staff_ID)values(12345,2345323,66347);
select *from ORDER;

Вам также может понравиться