-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
107 lines (98 loc) · 3.27 KB
/
Copy pathschema.sql
File metadata and controls
107 lines (98 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
drop table Store cascade constraints;
drop table Coffee cascade constraints;
drop table Promotion cascade constraints;
drop table MemberLevel cascade constraints;
drop table Customer cascade constraints;
drop table Purchase cascade constraints;
drop table OfferCoffee cascade constraints;
drop table HasPromotion cascade constraints;
drop table PromoteFor cascade constraints;
drop table BuyCoffee cascade constraints;
create table Store (
Store_ID int,
Name varchar2(20),
Address varchar2(20),
Store_Type varchar2(20),
GPS_Long float,
GPS_Lat float,
Constraint STORE_PK primary key (Store_ID)
);
create table Coffee (
Coffee_ID int,
Name varchar2(20),
Description varchar2(20),
Intensity int,
Price float,
Reward_Points float,
Redeem_Points float,
Constraint COFFEE_PK primary key (Coffee_ID),
CONSTRAINT price CHECK (Price >0),
CONSTRAINT intenseCK CHECK (Intensity >=0),
CONSTRAINT points_Check CHECK(Reward_Points >=0 AND Redeem_Points >=0)
);
create table Promotion (
Promotion_ID int,
Name varchar2(20),
Start_Date date,
End_Date date,
Constraint PROMOTION_PK primary key (Promotion_ID)
);
create table MemberLevel(
MemberLevel_ID int,
Name varchar2(20),
Booster_Factor float,
Constraint MEMBERLEVEL_PK primary key (MemberLevel_ID)
);
CREATE TABLE Customer(
Customer_ID int,
First_Name varchar2(20),
Last_Name varchar2(20),
Email varchar2(20),
MemberLevel_ID int,
Total_Points float,
CONSTRAINT CUSTOMER_PK PRIMARY KEY (Customer_ID),
CONSTRAINT CUSTOMER_FK FOREIGN KEY (MemberLevel_ID) REFERENCES MemberLevel(MemberLevel_ID),
CONSTRAINT CUSTOMER_POINTS_CK CHECK (Total_Points >= 0)
);
CREATE TABLE Purchase(
Purchase_ID int,
Customer_ID int,
Store_ID int,
Purchase_Time date,
CONSTRAINT PURCHASE_PK PRIMARY KEY (Purchase_ID),
CONSTRAINT PURCHASE_CUSTOMER_FK FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID),
CONSTRAINT PURCHASE_STORE_FK FOREIGN KEY (Store_ID) REFERENCES Store (Store_ID)
);
CREATE TABLE OfferCoffee(
Store_ID int,
Coffee_ID int,
CONSTRAINT OFFERCOFFEE_PK PRIMARY KEY (Store_ID, Coffee_ID),
CONSTRAINT OFFERCOFFEE_STORE_FK FOREIGN KEY (Store_ID) REFERENCES Store (Store_ID),
CONSTRAINT OFFERCOFFEE_COFFEE_FK FOREIGN KEY (Coffee_ID) REFERENCES Coffee (Coffee_ID)
);
CREATE TABLE HasPromotion (
Store_ID INT,
Promotion_ID INT,
CONSTRAINT HASPROM_pk PRIMARY KEY (Store_ID,Promotion_ID),
CONSTRAINT storeid_fk FOREIGN KEY (Store_ID) REFERENCES Store(Store_ID),
CONSTRAINT promid_fk FOREIGN KEY (Promotion_ID) REFERENCES Promotion(Promotion_ID)
);
CREATE TABLE PromoteFor (
Promotion_ID INT,
Coffee_ID INT,
CONSTRAINT promotePK PRIMARY KEY (Promotion_ID, Coffee_ID),
CONSTRAINT promFK FOREIGN KEY (Promotion_ID) REFERENCES Promotion(Promotion_ID),
CONSTRAINT coffeeFK FOREIGN KEY (Coffee_ID) REFERENCES Coffee(Coffee_ID)
);
CREATE TABLE BuyCoffee(
Purchase_ID int,
Coffee_ID int,
Purchase_Quantity int,
Redeem_Quantity int,
CONSTRAINT buycoffeePK PRIMARY KEY (Purchase_ID,Coffee_ID),
CONSTRAINT purchaseidFK FOREIGN KEY (Purchase_ID) REFERENCES Purchase(Purchase_ID),
CONSTRAINT coffeeidFK FOREIGN KEY (Coffee_ID) REFERENCES Coffee(Coffee_ID),
CONSTRAINT coffeAmt_CK CHECK (Purchase_Quantity >= 0),
CONSTRAINT redeem_ck CHECK (Redeem_Quantity >= 0)
);
SET CONSTRAINT ALL IMMEDIATE;