forked from fazledyn/cycloan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.sql
137 lines (124 loc) · 3.91 KB
/
schema.sql
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
CREATE TABLE OWNER
(
OWNER_ID NUMBER NOT NULL,
OWNER_NAME VARCHAR2(100) NOT NULL,
PASSWORD VARCHAR2(100) NOT NULL,
PHOTO_PATH VARCHAR2(100),
OWNER_PHONE VARCHAR2(20) NOT NULL,
LONGTITUDE NUMBER,
LATITUDE NUMBER,
EMAIL_ADDRESS VARCHAR2(100) NOT NULL,
CONSTRAINT OWNER_PK PRIMARY KEY(OWNER_ID)
);
CREATE TABLE OWNER_EMAIL_VERIFICATION
(
OWNER_ID NUMBER NOT NULL,
IS_VERIFIED NUMBER NOT NULL,
EMAIL_ADDRESS VARCHAR2(100) NOT NULL,
TOKEN_VALUE VARCHAR2(300),
TOKEN_CREATED DATE,
TOKEN_EXPIRY DATE,
CONSTRAINT OWNER_EMAIL_VER_PK PRIMARY KEY(OWNER_ID),
CONSTRAINT OWNER_EMAIL_VER_FK FOREIGN KEY(OWNER_ID) REFERENCES OWNER(OWNER_ID)
);
CREATE TABLE CUSTOMER
(
CUSTOMER_ID NUMBER NOT NULL,
CUSTOMER_NAME VARCHAR2(100) NOT NULL,
PASSWORD VARCHAR2(100) NOT NULL,
PHOTO_PATH VARCHAR2(100),
CUSTOMER_PHONE VARCHAR2(20) NOT NULL,
EMAIL_ADDRESS VARCHAR2(100) NOT NULL,
CONSTRAINT CUSTOMER_PK PRIMARY KEY(CUSTOMER_ID)
);
CREATE TABLE DOCUMENT
(
CUSTOMER_ID NUMBER NOT NULL,
TYPE_NAME VARCHAR2(20) NOT NULL,
FILE_PATH VARCHAR2(100) NOT NULL,
CONSTRAINT DOCUMENT_PK PRIMARY KEY(CUSTOMER_ID),
CONSTRAINT CUSTOMER_DOCUMENT_FK FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
);
CREATE TABLE CUSTOMER_EMAIL_VERIFICATION
(
CUSTOMER_ID NUMBER NOT NULL,
IS_VERIFIED NUMBER NOT NULL,
EMAIL_ADDRESS VARCHAR2(100) NOT NULL,
TOKEN_VALUE VARCHAR2(300),
TOKEN_CREATED DATE,
TOKEN_EXPIRY DATE,
CONSTRAINT CUSTOMER_EMAIL_VER_PK PRIMARY KEY(CUSTOMER_ID),
CONSTRAINT CUSTOMER_EMAIL_VER_FK FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
);
CREATE TABLE CYCLE
(
CYCLE_ID NUMBER NOT NULL,
MODEL VARCHAR2(100),
STATUS NUMBER NOT NULL,
PHOTO_PATH VARCHAR2(100),
OWNER_ID NUMBER NOT NULL,
FARE_PER_DAY NUMBER NOT NULL,
CONSTRAINT CYCLE_PK PRIMARY KEY(CYCLE_ID),
CONSTRAINT CYCLE_OWNER_FK FOREIGN KEY(OWNER_ID) REFERENCES OWNER(OWNER_ID)
);
CREATE TABLE OWNS
(
CYCLE_ID NUMBER NOT NULL,
OWNER_ID NUMBER NOT NULL,
CONSTRAINT OWNS_CYCLE_PK PRIMARY KEY(CYCLE_ID),
CONSTRAINT OWNS_CYCLE_FK FOREIGN KEY(CYCLE_ID) REFERENCES CYCLE(CYCLE_ID),
CONSTRAINT OWNS_OWNER_FK FOREIGN KEY(OWNER_ID) REFERENCES OWNER(OWNER_ID)
);
CREATE TABLE TRIP_DETAILS
(
TRIP_ID NUMBER NOT NULL,
START_DATE_TIME DATE NOT NULL,
END_DATE_TIME DATE NOT NULL,
STATUS NUMBER NOT NULL,
PAYMENT_TYPE VARCHAR2(50) NOT NULL,
CUSTOMER_ID NUMBER NOT NULL,
CYCLE_ID NUMBER NOT NULL,
CONSTRAINT TRIP_PK PRIMARY KEY(TRIP_ID),
CONSTRAINT TRIP_CYCLE_FK FOREIGN KEY(CYCLE_ID) REFERENCES CYCLE(CYCLE_ID),
CONSTRAINT TRIP_CUSTOMER_FK FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
);
CREATE TABLE CYCLE_REVIEW
(
REVIEW_ID NUMBER NOT NULL,
RATING NUMBER,
COMMENT_TEXT VARCHAR2(500),
CUSTOMER_ID NUMBER NOT NULL,
CYCLE_ID NUMBER NOT NULL,
CONSTRAINT CYCLE_REVIEW_PK PRIMARY KEY(REVIEW_ID),
CONSTRAINT CYCLE_REVIEW_CYCLE_FK FOREIGN KEY(CYCLE_ID) REFERENCES CYCLE(CYCLE_ID),
CONSTRAINT CYCLE_REVIEW_CUSTOMER_FK FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
);
CREATE TABLE PEER_REVIEW
(
REVIEW_ID NUMBER NOT NULL,
RATING NUMBER,
COMMENT_TEXT VARCHAR2(500),
CUSTOMER_ID NUMBER NOT NULL,
OWNER_ID NUMBER NOT NULL,
CONSTRAINT PEER_REVIEW_PK PRIMARY KEY(REVIEW_ID),
CONSTRAINT PEER_REVIEW_OWNER_FK FOREIGN KEY(OWNER_ID) REFERENCES OWNER(OWNER_ID),
CONSTRAINT PEER_REVIEW_CUSTOMER_FK FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
);
CREATE TABLE RESERVES
(
TRIP_ID NUMBER NOT NULL,
CYCLE_ID NUMBER NOT NULL,
CUSTOMER_ID NUMBER NOT NULL,
CONSTRAINT RESERVES_PK PRIMARY KEY(TRIP_ID),
CONSTRAINT RESERVES_TRIP_FK FOREIGN KEY(TRIP_ID) REFERENCES TRIP_DETAILS(TRIP_ID),
CONSTRAINT RESERVES_CYCLE_FK FOREIGN KEY(CYCLE_ID) REFERENCES CYCLE(CYCLE_ID),
CONSTRAINT RESERVES_CUSTOMER_FK FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
);
CREATE TABLE ADMIN
(
ADMIN_ID NUMBER NOT NULL,
ADMIN_NAME VARCHAR2(100) NOT NULL,
ADMIN_EMAIL VARCHAR2(100) NOT NULL,
ADMIN_PASSWORD VARCHAR2(100) NOT NULL,
CONSTRAINT ADM_PK PRIMARY KEY(ADMIN_ID)
);