-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb-schema.sql
More file actions
349 lines (326 loc) · 10.9 KB
/
db-schema.sql
File metadata and controls
349 lines (326 loc) · 10.9 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
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
/********************EXECUTE SEQUENCE 2********************/
-- ----------------------------
-- Table structure for "MAKE"
-- ----------------------------
DROP TABLE MAKE;
CREATE TABLE MAKE (
MAKE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(60) NOT NULL,
DESCRIPTION VARCHAR(100),
YEAR_START INT NOT NULL,
YEAR_END INT
);
-- ----------------------------
-- Table structure for "MODEL"
-- ----------------------------
DROP TABLE MODEL;
CREATE TABLE MODEL (
MODEL_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(60) NOT NULL,
DESCRIPTION VARCHAR(100),
YEAR_START INT NOT NULL,
YEAR_END INT,
MAKE_ID INT NOT NULL
);
-- ----------------------------
-- Table structure for "STYLE"
-- ----------------------------
DROP TABLE STYLE;
CREATE TABLE STYLE (
STYLE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(60) NOT NULL,
DESCRIPTION VARCHAR(100),
STYLE_TYPE INT(3), -- TRIM, PACKAGE
BODY_TYPE INT(3) NOT NULL, -- SEDAN, WAGON, CROSSOVER, LUXURY, COUPE, HATCHBACK, SUV, HYBRID ETC..
YEAR_START INT NOT NULL,
YEAR_END INT,
MODEL_ID INT NOT NULL
);
-- ----------------------------
-- Table structure for "SPEC"
-- ----------------------------
DROP TABLE MILEAGE;
CREATE TABLE MILEAGE (
MILEAGE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
MILEAGE_CITY INT(3),
MILEAGE_HWY INT(3),
YEAR INT(4), -- POPULATED WHEN MILEAGE CHANGES FOR A STYLE
STYLE_ID INT NOT NULL
);
-- ----------------------------
-- Table structure for "CATEGORY"
-- ----------------------------
DROP TABLE CATEGORY;
CREATE TABLE CATEGORY (
CATEGORY_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(60) NOT NULL,
DESCRIPTION VARCHAR(100),
MISC_DATA VARCHAR(250),
CATEGORY_TYPE INT(3), -- FUTURE USE.
SEQ_ORDER INT(3),
AUTH_REQUIRED TINYINT(1),
PARENT_ID INT,
EFFECTIVE_DATE DATE NOT NULL,
EXPIRY_DATE DATE,
CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CREATED_BY INT NOT NULL
);
-- ----------------------------
-- Table structure for "VEHICLE"
-- ----------------------------
DROP TABLE VEHICLE;
CREATE TABLE VEHICLE (
VEHICLE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
YEAR INT NOT NULL,
MAKE_ID INT NOT NULL,
MODEL_ID INT NOT NULL,
STYLE_ID INT, -- MADE NULLABLE TO SUPPORT ADDING VEHICLE FOR INQUIRY BY CUSTOMERS.
STOCK_NBR VARCHAR(60),
DESCRIPTION VARCHAR(100),
ENGINE VARCHAR(60),
TRANS_TYPE INT(3), -- AUTOMATIC, 5 SPEED MANUAL
DRV_TRN_TYPE INT(3), -- AWD, FWD, RWD, 4WD
FUEL_TYPE INT(3),
VIN VARCHAR(60),
MILEAGE INT,
DEALER_PRICE DECIMAL(8, 2) NOT NULL,
SALE_PRICE DECIMAL(8, 2) NOT NULL,
SPECIAL_PRICE DECIMAL(8, 2),
COLOR_EXT VARCHAR(60),
COLOR_INT VARCHAR(60),
WARRANTY_TYPE INT(3), -- STANDARD, EXTENDED
WARRANTY_TERM INT(4), -- EX: IN MONTHS 12, 24, 36, 48, 60
WARRANTY_MILES INT, -- EX: 30000, 50000, 100000
STATUS INT(3) NOT NULL, -- AVAILABLE, SOLD, ONHOLD
VEH_CONDITION INT(3), -- NEW, USED, CERTIFIED
CARFAX_APPRV_URL VARCHAR(200), -- IF THE VEHICLE IS CARFAX APPROVED, THEN ENTER THE URL HERE.
ADDITIONAL_INFO VARCHAR(1000),
DATE_SOLD DATE,
LOCATION_ID INT NOT NULL,
CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CREATED_BY INT NOT NULL
);
-- ----------------------------
-- Table structure for "FEATURE"
-- ----------------------------
DROP TABLE FEATURE_GROUP;
CREATE TABLE FEATURE_GROUP (
FEATURE_GROUP_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(60) NOT NULL,
DISPLAY_TYPE INT(3), -- CHECKBOX: CAN SELECT MORE THAN ONE VALUE, RADIOBUTTON: SELECT ONLY ONE VALUE.
DESCRIPTION VARCHAR(100),
GROUP_TYPE INT(3), -- POSSIBLE VALUES COULD BE POWER TRAIN, DRIVE TRAIN, OPTIONS
PARENT_ID INT -- REFERS TO THE FEATURE_GROUP_ID TO PROVIDE SUPPORT FOR SUB-GROUPING
);
-- ----------------------------
-- Table structure for "FEATURE_VALUE"
-- ----------------------------
DROP TABLE FEATURE;
CREATE TABLE FEATURE (
FEATURE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FEATURE_VALUE VARCHAR(100),
ADD_DEFAULT TINYINT(1), -- If True, will be automatically added by default for each new entry in the Inventory
MAKE_ID INT, -- IF VALUE INSERTED HERE, THIS WILL BE SHOWN ONLY FOR THE SPECIFIED MAKES. IF NULL, THEN WILL BE SHOWN FOR ALL. EX: ACURALINK
YEAR_START INT(4), -- IF POPULATED, THIS FEATURE WILL BE SHOWN ONLY TO RELEVANT MODELS STARTING THIS YEAR.
YEAR_END INT(4), -- IF POPULATED, THIS FEATURE WILL NOT BE SHOWN TO MODELS AFTER THIS YEAR.
FEATURE_GROUP_ID INT NOT NULL
);
-- ----------------------------
-- Table structure for "IMAGE"
-- ----------------------------
DROP TABLE IMAGE;
CREATE TABLE IMAGE (
IMAGE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(60) NOT NULL,
DESCRIPTION VARCHAR(100),
IMAGE_EXTENSION VARCHAR(10),
MIME_TYPE VARCHAR(40),
IMAGE_LOCATION VARCHAR(100),
IMAGE_TYPE INT(3), -- PRIMARY, BANNER, LOGO
IMAGE_SIZE INT,
BANNER TINYINT(1), -- USE THIS IMAGE FOR BANNER.
VEHICLE_ID INT, -- POPULATED IF THE IMAGES ARE OF VEHICLES
USER_INFO_ID INT, -- POPULATED IF THE IMAGES ARE OF USERS
CLIENT_ID INT, -- POPULATED IF THE IMAGES ARE OF CLIENTS
CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- ----------------------------
-- Table structure for "ADVERTISEMENT"
-- ----------------------------
DROP TABLE ADVERTISEMENT;
CREATE TABLE ADVERTISEMENT (
ADVERTISEMENT_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EFFECTIVE_DATE DATE NOT NULL,
EXPIRY_DATE DATE,
STATUS INT(3) NOT NULL, -- ACTIVE, SUSPENDED, CANCELLED
UNIT_PRICE DECIMAL(8, 2),
UNITS INT(3), -- PRICE PER UNIT WHICH CAN BE: HOURLY, DAILY, WEEKLY, MONTHLY ETC.
VEHICLE_ID INT NOT NULL, -- REFERS TO THE VEHICLE WHICH NEEDS TO BE ADVERTISED.
CREATED_BY INT NOT NULL, -- REFERS TO THE USER WHO IS ADVERTISING THE VEHICLE. CAN BE EITHER CLIENT OR CUSTOMER.
CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- ----------------------------
-- Table structure for "LOAN_APPLICATION"
-- ----------------------------
DROP TABLE LOAN_APPLICATION;
CREATE TABLE LOAN_APPLICATION (
LOAN_APPLICATION_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
VEHICLE_ID INT NOT NULL,
STATUS INT(3) NOT NULL, -- SUBMITTED, UNDER REVIEW, APPROVED
FINANCE_TYPE INT(3), -- PURCHASE, LEASE
LOAN_TERM INT(4), -- IN MONTHS
LOAN_AMOUNT DECIMAL(8, 2),
DOWNPAYMENT DECIMAL(8, 2),
ADDTIONAL_INFO VARCHAR(1000),
CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CREATED_BY INT,
UPDATE_DATE TIMESTAMP NOT NULL,
UPDATED_BY INT
);
-- ----------------------------
-- Table structure for "APPLICANT"
-- ----------------------------
DROP TABLE APPLICANT;
CREATE TABLE APPLICANT (
APPLICANT_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
LOAN_APPLICATION_ID INT NOT NULL,
FIRST_NAME VARCHAR(60) NOT NULL,
MIDDLE_NAME VARCHAR(60),
LAST_NAME VARCHAR(60) NOT NULL,
DATE_OF_BIRTH DATE NOT NULL,
SSN INT NOT NULL,
DMV_LICENSE_NUM VARCHAR(15),
LICENSE_STATE VARCHAR(2),
LICENSE_EXPIRY DATE
);
-- ----------------------------
-- Table structure for "RESIDENCE"
-- ----------------------------
DROP TABLE RESIDENCE;
CREATE TABLE RESIDENCE (
RESIDENCE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
APPLICANT_ID INT NOT NULL,
LOCATION_ID INT NOT NULL,
RESIDENCE_TYPE INT(3) NOT NULL, -- RENTED, OWNED
RENT_MORG_AMOUNT DECIMAL(8, 2), -- AMOUNT PER MONTH
TOTAL_YEARS INT(2),
TOTAL_MONTHS INT(2)
);
-- ----------------------------
-- Table structure for "EMPLOYMENT"
-- ----------------------------
DROP TABLE EMPLOYMENT;
CREATE TABLE EMPLOYMENT (
EMPLOYMENT_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
APPLICANT_ID INT NOT NULL,
LOCATION_ID INT NOT NULL,
EMPLOYER_NAME VARCHAR(60) NOT NULL,
DESIGNATION VARCHAR(60) NOT NULL,
OCCUPATION VARCHAR(60),
INCOME_MONTHLY INT NOT NULL,
TOTAL_YEARS INT(2),
TOTAL_MONTHS INT(2),
CURRENT_EMPLOYER TINYINT(1) NOT NULL
);
-- ----------------------------
-- Table structure for "ACCOUNT"
-- ----------------------------
DROP TABLE ACCOUNT;
CREATE TABLE ACCOUNT (
ACCOUNT_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
APPLICANT_ID INT NOT NULL,
LOCATION_ID INT NOT NULL,
BANK_NAME VARCHAR(100) NOT NULL,
ACCOUNT_TYPE INT(3) NOT NULL, -- CHECKING, SAVING
ACCOUNT_NUMBER VARCHAR(20) NOT NULL,
ROUTING_NUMBER VARCHAR(9)
);
-- ----------------------------
-- Table structure for "APPLICANT"
-- ----------------------------
DROP TABLE TRADEIN_INFO;
CREATE TABLE TRADEIN_INFO (
TRADEIN_INFO_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
LOAN_APPLICATION_ID INT NOT NULL,
MAKE_ID INT NOT NULL,
MODEL_ID INT NOT NULL,
STYLE_ID INT NOT NULL,
YEAR INT(4),
COLOR VARCHAR(20),
MILEAGE INT,
VIN VARCHAR(60),
PAYOFF_AMOUNT DECIMAL(8,2),
PAYOFF_THRU_DATE DATE,
LIEN_HOLDER_ADD1 VARCHAR(100),
LIEN_HOLDER_ADD2 VARCHAR(100),
LIEN_HOLDER_CITY VARCHAR(20),
LIEN_HOLDER_STATE VARCHAR(2),
LIEN_HOLDER_ZIP VARCHAR(5)
);
-- ----------------------------
-- Table structure for "INQUIRY"
-- ----------------------------
DROP TABLE INQUIRY;
CREATE TABLE INQUIRY (
INQUIRY_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FIRST_NAME VARCHAR(20) NOT NULL,
LAST_NAME VARCHAR(20) NOT NULL,
PHONE_NUMBER VARCHAR(20) NOT NULL,
EMAIL VARCHAR(50) NOT NULL,
INQUIRY_TYPE INT(3), -- FUTURE USE
NOTES VARCHAR(800),
VEHICLE_ID INT, -- IF AN INQUIRY IS PLACED FOR THIS VEHICLE
USER_INFO_ID INT, -- IF THIS IS AN EXISTING USER, THEN POPULATE.
CREATE_DATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- ----------------------------
-- Table structure for "FIND_VEHICLE"
-- ----------------------------
DROP TABLE FIND_VEHICLE;
CREATE TABLE FIND_VEHICLE (
FIND_VEHICLE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
BODY_TYPE INT(3), -- SUV, SEDAN ETC.
MODEL_ID INT, -- REFERS THE MODEL_ID COLUMN
STYLE_ID INT, -- REFERS THE STYLE_ID COLUMN
MILEAGE INT,
INQUIRY_ID INT NOT NULL -- -- REFERS THE INQUIRY_ID COLUMN
);
-- ----------------------------
-- Table structure for "TRASH_CAN"
-- ----------------------------
DROP TABLE TRASH_CAN;
CREATE TABLE TRASH_CAN (
TRASH_CAN_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
LOCATION VARCHAR(100) NOT NULL, -- LOCATION TO BE TRASHED
TRASHED_BY INT NOT NULL
);
-- ----------------------------
-- MANY TO MANY RELATIONSHIP --
-- ----------------------------
-- ----------------------------
-- Table structure for "RL_VEHICLE_CATEGORY"
-- ----------------------------
DROP TABLE RL_VEHICLE_CATEGORY;
CREATE TABLE RL_VEHICLE_CATEGORY (
VEHICLE_ID INT NOT NULL,
CATEGORY_ID INT NOT NULL,
PRIMARY KEY(VEHICLE_ID, CATEGORY_ID)
);
-- ----------------------------
-- Table structure for "RL_VEHICLE_FEATURE"
-- ----------------------------
DROP TABLE RL_VEHICLE_FEATURE;
CREATE TABLE RL_VEHICLE_FEATURE (
VEHICLE_ID INT NOT NULL,
FEATURE_ID INT NOT NULL,
PRIMARY KEY(VEHICLE_ID, FEATURE_ID)
);
-- ----------------------------
-- Table structure for "RL_STYLE_FEATURE"
-- ----------------------------
DROP TABLE RL_STYLE_FEATURE;
CREATE TABLE RL_STYLE_FEATURE (
STYLE_ID INT NOT NULL,
FEATURE_ID INT NOT NULL,
PRIMARY KEY(STYLE_ID, FEATURE_ID)
);