-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODAYSHOUSE_DB.sql
611 lines (483 loc) · 33.1 KB
/
TODAYSHOUSE_DB.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
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
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
-- 테이블 순서는 관계를 고려하여 한 번에 실행해도 에러가 발생하지 않게 정렬되었습니다.
-- STORE Table Create SQL
CREATE TABLE STORE
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '스토어 ID. 1,2,3...',
`NAME` VARCHAR(45) NOT NULL COMMENT '스토어명',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE STORE COMMENT '스토어';
-- SELLER_INFORMATION Table Create SQL
CREATE TABLE SELLER_INFORMATION
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '판매자 정보 ID. 1,2,3...',
`NAME` VARCHAR(45) NOT NULL COMMENT '상호',
`HEADER` VARCHAR(45) NOT NULL COMMENT '대표자',
`ADDRESS` VARCHAR(100) NOT NULL COMMENT '사업장 소재지',
`CUSTOMER_SERVICE_NUMBER` VARCHAR(64) NOT NULL COMMENT '고객센터 전화번호',
`EMAIL` VARCHAR(100) NOT NULL COMMENT '이메일. test@google.com',
`COMPANY_REGISTRATION_NUMBER` VARCHAR(100) NOT NULL COMMENT '사업자 등록번호. 123-65-78945',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE SELLER_INFORMATION COMMENT '배송/교환/환불에 표시되는 판매자 정보';
-- QUESTION_TYPE Table Create SQL
CREATE TABLE QUESTION_TYPE
(
`ID` TINYINT NOT NULL AUTO_INCREMENT COMMENT '문의 유형 ID. 1,2,3...',
`NAME` VARCHAR(6) NOT NULL COMMENT '문의 유형명. 상품,배송,반품,교환,환불,기타',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE QUESTION_TYPE COMMENT '문의유형 (상품,배송,반품,교환,환불,기타)';
-- USER Table Create SQL
CREATE TABLE USER
(
`USER_IDX` BIGINT NOT NULL AUTO_INCREMENT COMMENT '사용자 일련번호. 1,2,3...',
`EMAIL` VARCHAR(100) NOT NULL COMMENT '사용자 로그인 이메일. test@google.com',
`PASSWORD` VARCHAR(100) NOT NULL COMMENT '사용자 로그인 비밀번호. asdfg123',
`NICKNAME` VARCHAR(45) NOT NULL COMMENT '사용자 닉네임',
`PHONE_NUMBER` VARCHAR(64) NULL COMMENT '사용자 전화번호',
`ADDRESS` VARCHAR(100) NULL COMMENT '사용자 주소. 서울 강남구 강남대로96길 22',
`PROFILE_URL` VARCHAR(512) NULL COMMENT '프로필 사진. 클라이언트에서 URL받는 사용자 프로필사진',
`MEMBERSHIP_LEVEL` VARCHAR(45) NOT NULL DEFAULT 'WELCOME' COMMENT '등급. 등급 : WELCOME, VIP',
`POINTS` INT NOT NULL DEFAULT 0 COMMENT '포인트. 사용자 누적 포인트',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (USER_IDX)
);
ALTER TABLE USER COMMENT '사용자';
-- ADDITIONAL Table Create SQL
CREATE TABLE ADDITIONAL
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '추가상품ID. 1,2,3...',
`NAME` VARCHAR(100) NOT NULL COMMENT '추가상품명',
`PRICE` INT UNSIGNED NOT NULL COMMENT '추가상품 가격',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE ADDITIONAL COMMENT '상품의 추가상품(추가상품마다 가격이 다름)';
-- QUESTION Table Create SQL
CREATE TABLE QUESTION
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '문의 ID. 1,2,3...',
`USER_IDX` BIGINT NOT NULL COMMENT '문의한 사용자 일련번호. 1,2,3...',
`QUESTION` VARCHAR(150) NOT NULL COMMENT '문의 내용',
`ANSWER` VARCHAR(150) NULL COMMENT '답변 내용',
`PROGRESS` BIT NULL DEFAULT 0 COMMENT '답변 여부. 0: 미답변, 1:답변완료',
`SECRET` BIT NULL DEFAULT 0 COMMENT '비밀글 여부. 0:비밀글X, 1:비밀글 (상품타입 제외하고 비밀글 설정가능)',
`TYPE_ID` TINYINT NOT NULL COMMENT '문의유형 ID',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE QUESTION COMMENT '전체 문의';
ALTER TABLE QUESTION
ADD CONSTRAINT FK_QUESTION_TYPE_ID_QUESTION_TYPE_ID FOREIGN KEY (TYPE_ID)
REFERENCES QUESTION_TYPE (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE QUESTION
ADD CONSTRAINT FK_QUESTION_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- CONTENT_OF_ITEM Table Create SQL
CREATE TABLE CONTENT_OF_ITEM
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '상품에 들어가는 각각 내용ID. 1,2,3...',
`IMAGE` VARCHAR(512) NULL COMMENT '상품에 들어가는 내용 중 이미지. 이미지 URL',
`WRITING` TEXT NULL COMMENT '상품에 들어가는 내용 중 글. 글은 없을수도 있음',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE CONTENT_OF_ITEM COMMENT '상품의 사진이나 글(내용)';
-- ITEM Table Create SQL
CREATE TABLE ITEM
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '상품 ID. 1,2,3...',
`STORE_ID` BIGINT NOT NULL COMMENT '상품을 판매하는 스토어 아이디',
`NAME` VARCHAR(200) NOT NULL COMMENT '상품명',
`PRICE` INT UNSIGNED NOT NULL COMMENT '상품가격(원가). 양의 정수',
`DISCOUNT_RATE` TINYINT NULL COMMENT '상품 할인율. 양의 정수',
`DELIVERY_FEE` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '상품 배송비. 입력하지않을시 = 0 (무료배송)',
`SELLER_INFO_ID` BIGINT NOT NULL COMMENT '판매자 정보 ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE ITEM COMMENT '상품';
ALTER TABLE ITEM
ADD CONSTRAINT FK_ITEM_STORE_ID_STORE_ID FOREIGN KEY (STORE_ID)
REFERENCES STORE (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE ITEM
ADD CONSTRAINT FK_ITEM_SELLER_INFO_ID_SELLER_INFORMATION_ID FOREIGN KEY (SELLER_INFO_ID)
REFERENCES SELLER_INFORMATION (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- PHOTO Table Create SQL
CREATE TABLE PHOTO
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'PHOTO의 ID. 1,2,3...',
`USER_IDX` BIGINT NOT NULL COMMENT 'PHOTO의 작성자 일련번호',
`TYPE` BIT NOT NULL DEFAULT 0 COMMENT 'video 또는 image. 1:video / 0:image',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE PHOTO COMMENT 'PHOTO 게시글';
ALTER TABLE PHOTO
ADD CONSTRAINT FK_PHOTO_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- CONTENT_OF_PHOTO Table Create SQL
CREATE TABLE CONTENT_OF_PHOTO
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'PHOTO에 들어가는 각각 내용ID. 1,2,3...',
`IMAGE` VARCHAR(512) NULL COMMENT 'PHOTO에 들어가는 내용 중 이미지. 이미지 URL',
`WRITING` TEXT NULL COMMENT 'PHOTO에 들어가는 내용 중 글. 글은 없을수도 있음',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE CONTENT_OF_PHOTO COMMENT 'PHOTO의 사진이나 글(내용)';
-- DISCOUNT_COUPON Table Create SQL
CREATE TABLE DISCOUNT_COUPON
(
`ID` INT NOT NULL AUTO_INCREMENT COMMENT '할인쿠폰ID. 1,2,3...',
`DISCOUNT_RATE` TINYINT NOT NULL COMMENT '할인쿠폰의 할인율. 30',
`NAME` VARCHAR(100) NOT NULL COMMENT '할인쿠폰명. 다우니 30%할인쿠폰',
`BASE_PRICE` INT NULL DEFAULT 0 COMMENT '할인쿠폰 적용가능 조건. 적용가능한 시작금액(EX.5000원 이상 구매시 = 5000) / 0 = 조건없이 무조건 적용 가능',
`EXPIRATION_PERIOD` DATE NOT NULL COMMENT '할인쿠폰 유효기간. 쿠폰마감일의 형식 : YYYY-MM-DD',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE DISCOUNT_COUPON COMMENT '상품 할인쿠폰';
-- PHOTO_FILTER Table Create SQL
CREATE TABLE PHOTO_FILTER
(
`ID` INT NOT NULL AUTO_INCREMENT COMMENT 'PHOTO 필터 ID. 1,2,3...',
`NAME` VARCHAR(10) NOT NULL COMMENT '필터명. 평수, 주거형태, 스타일, 공간',
`KIND` VARCHAR(45) NOT NULL COMMENT '필터에 속하는 종류. 4개의 필터 각각에 속한 내용(10평 미만, 10평대 ...)',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE PHOTO_FILTER COMMENT 'PHOTO의 필터';
-- COLOR Table Create SQL
CREATE TABLE COLOR
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '상품의 선택항목 ID. 1,2,3...',
`NAME` VARCHAR(100) NOT NULL COMMENT '해당 상품의 선택항목에 대한 정보. RED, YELLOW, LARGE...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE COLOR COMMENT '상품의 선택항목 정보(색상, 사이즈 ...), 선택가능한 항목이 없으면 단일상품으로 처리';
-- ITEM_CATEGORY Table Create SQL
CREATE TABLE ITEM_CATEGORY
(
`ID` INT NOT NULL AUTO_INCREMENT COMMENT '카테고리ID. 1,2,3...',
`LARGE_CATEGORY` VARCHAR(45) NOT NULL COMMENT '대분류. 가구,패브릭, 조명...',
`MEDIUM_CATEGORY` VARCHAR(45) NOT NULL COMMENT '중분류. 침대, 소파 ...',
`SMALL_CATEGORY` VARCHAR(45) NULL COMMENT '소분류. 전체, 일반소파, 리클라이너 ... / 없을 수 있음',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE ITEM_CATEGORY COMMENT '상품 카테고리';
-- TAG_PHOTO Table Create SQL
CREATE TABLE TAG_PHOTO
(
`IMAGE_ID` BIGINT NOT NULL COMMENT '해당 태그가 걸린 PHOTO의 내용(이미지) ID. 1,2,3...',
`ITEM_ID` BIGINT NOT NULL COMMENT 'PHOTO에 걸린 태그에 해당하는 상품ID. 1,2,3...',
`PHOTO_ID` BIGINT NOT NULL COMMENT '태그를 건 PHOTO ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (IMAGE_ID, ITEM_ID)
);
ALTER TABLE TAG_PHOTO COMMENT 'PHOTO에 걸린 태그';
ALTER TABLE TAG_PHOTO
ADD CONSTRAINT FK_TAG_PHOTO_PHOTO_ID_PHOTO_ID FOREIGN KEY (PHOTO_ID)
REFERENCES PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE TAG_PHOTO
ADD CONSTRAINT FK_TAG_PHOTO_IMAGE_ID_CONTENT_OF_PHOTO_ID FOREIGN KEY (IMAGE_ID)
REFERENCES CONTENT_OF_PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE TAG_PHOTO
ADD CONSTRAINT FK_TAG_PHOTO_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- FOLLOW Table Create SQL
CREATE TABLE FOLLOW
(
`USER_IDX` BIGINT NOT NULL COMMENT '팔로우 한 사용자 일련번호. 1,2,3...',
`FOLLOWED_USER_IDX` BIGINT NOT NULL COMMENT '팔로우 당한 사용자 일련번호. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (USER_IDX, FOLLOWED_USER_IDX)
);
ALTER TABLE FOLLOW COMMENT '팔로우 한 목록';
ALTER TABLE FOLLOW
ADD CONSTRAINT FK_FOLLOW_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE FOLLOW
ADD CONSTRAINT FK_FOLLOW_FOLLOWED_USER_IDX_USER_USER_IDX FOREIGN KEY (FOLLOWED_USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- SCRAP_PHOTO Table Create SQL
CREATE TABLE SCRAP_PHOTO
(
`USER_IDX` BIGINT NOT NULL COMMENT '스크랩 한 사용자 일련번호. 1,2,3...',
`PHOTO_ID` BIGINT NOT NULL COMMENT '스크랩 당한 PHOTO ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (USER_IDX, PHOTO_ID)
);
ALTER TABLE SCRAP_PHOTO COMMENT '스크랩 한 PHOTO';
ALTER TABLE SCRAP_PHOTO
ADD CONSTRAINT FK_SCRAP_PHOTO_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE SCRAP_PHOTO
ADD CONSTRAINT FK_SCRAP_PHOTO_PHOTO_ID_PHOTO_ID FOREIGN KEY (PHOTO_ID)
REFERENCES PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- LIKED_PHOTO Table Create SQL
CREATE TABLE LIKED_PHOTO
(
`USER_IDX` BIGINT NOT NULL COMMENT '좋아요 누른 사용자 일련번호. 1,2,3...',
`PHOTO_ID` BIGINT NOT NULL COMMENT '좋아요 눌린 PHOTO ID',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (USER_IDX, PHOTO_ID)
);
ALTER TABLE LIKED_PHOTO COMMENT '좋아요 누른 PHOTO';
ALTER TABLE LIKED_PHOTO
ADD CONSTRAINT FK_LIKED_PHOTO_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE LIKED_PHOTO
ADD CONSTRAINT FK_LIKED_PHOTO_PHOTO_ID_PHOTO_ID FOREIGN KEY (PHOTO_ID)
REFERENCES PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- SCRAP_ITEM Table Create SQL
CREATE TABLE SCRAP_ITEM
(
`USER_IDX` BIGINT NOT NULL COMMENT '스크랩 한 사용자 일련번호. 1,2,3...',
`ITEM_ID` BIGINT NOT NULL COMMENT '스크랩 당한 상품 ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (USER_IDX, ITEM_ID)
);
ALTER TABLE SCRAP_ITEM COMMENT '스크랩 한 상품';
ALTER TABLE SCRAP_ITEM
ADD CONSTRAINT FK_SCRAP_ITEM_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE SCRAP_ITEM
ADD CONSTRAINT FK_SCRAP_ITEM_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- VIEW_PHOTO Table Create SQL
CREATE TABLE VIEW_PHOTO
(
`PHOTO_ID` BIGINT NOT NULL COMMENT 'PHOTO ID. 1,2,3...',
`VIEW` BIGINT NOT NULL DEFAULT 0 COMMENT 'PHOTO 조회수',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (PHOTO_ID)
);
ALTER TABLE VIEW_PHOTO COMMENT 'PHOTO 조회수';
ALTER TABLE VIEW_PHOTO
ADD CONSTRAINT FK_VIEW_PHOTO_PHOTO_ID_PHOTO_ID FOREIGN KEY (PHOTO_ID)
REFERENCES PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- COMMENT_PHOTO Table Create SQL
CREATE TABLE COMMENT_PHOTO
(
`ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '댓글 ID. 1,2,3...',
`PHOTO_ID` BIGINT NOT NULL COMMENT '댓글이 달린 PHOTO ID. 1,2,3...',
`USER_IDX` BIGINT NOT NULL COMMENT '댓글을 단 사용자 일련번호',
`COMMENT` TEXT NOT NULL COMMENT '댓글 내용',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ID)
);
ALTER TABLE COMMENT_PHOTO COMMENT 'PHOTO에 달린 댓글';
ALTER TABLE COMMENT_PHOTO
ADD CONSTRAINT FK_COMMENT_PHOTO_PHOTO_ID_PHOTO_ID FOREIGN KEY (PHOTO_ID)
REFERENCES PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE COMMENT_PHOTO
ADD CONSTRAINT FK_COMMENT_PHOTO_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- REVIEW Table Create SQL
CREATE TABLE REVIEW
(
`REVIEW_ID` BIGINT NOT NULL AUTO_INCREMENT COMMENT '리뷰 일련번호. 1,2,3...',
`ITEM_ID` BIGINT NOT NULL COMMENT '리뷰가 쓰이는 상품 ID. 1,2,3...',
`COLOR_ID` BIGINT NULL COMMENT '상품의 선택항목 ID. 1,2,3... / 선택가능한 항목이 없으면 단일상품',
`USER_IDX` BIGINT NOT NULL COMMENT '리뷰를 작성하는 사용자 일련번호. 1,2,3...',
`STAR_RATING` INT NOT NULL COMMENT '별점. 1~5(정수)',
`CONTENTS` TEXT NOT NULL COMMENT '리뷰내용. 리뷰 글',
`IMAGE` VARCHAR(512) NULL COMMENT '리뷰에 업로드하는 이미지. 클라이언트에서 받아 온 이미지URL',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (REVIEW_ID)
);
ALTER TABLE REVIEW COMMENT '상품 리뷰';
ALTER TABLE REVIEW
ADD CONSTRAINT FK_REVIEW_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE REVIEW
ADD CONSTRAINT FK_REVIEW_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- PURCHASE Table Create SQL
CREATE TABLE PURCHASE
(
`USER_IDX` BIGINT NOT NULL COMMENT '구매한 사용자 일련번호. 1,2,3...',
`ITEM_ID` BIGINT NOT NULL COMMENT '상품 ID. 1,2,3...',
`PROGRESS` SMALLINT NOT NULL COMMENT '주문 진행상황. 1 = 입금대기 / 2=결제완료 / 3=배송준비 / 4=배송중 / 5=배송완료 / 6=리뷰쓰기',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (USER_IDX, ITEM_ID)
);
ALTER TABLE PURCHASE COMMENT '사용자의 상품 구매내역';
ALTER TABLE PURCHASE
ADD CONSTRAINT FK_PURCHASE_USER_IDX_USER_USER_IDX FOREIGN KEY (USER_IDX)
REFERENCES USER (USER_IDX) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE PURCHASE
ADD CONSTRAINT FK_PURCHASE_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- CONTENT_ORGANIZATION_OF_PHOTO Table Create SQL
CREATE TABLE CONTENT_ORGANIZATION_OF_PHOTO
(
`CONTENT_ID` BIGINT NOT NULL COMMENT 'PHOTO에 들어가는 각각 내용ID. 1,2,3...',
`PHOTO_ID` BIGINT NOT NULL COMMENT '내용이 구성될 PHOTO ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (CONTENT_ID, PHOTO_ID)
);
ALTER TABLE CONTENT_ORGANIZATION_OF_PHOTO COMMENT '각 PHOTO의 내용 구성';
ALTER TABLE CONTENT_ORGANIZATION_OF_PHOTO
ADD CONSTRAINT FK_CONTENT_ORGANIZATION_OF_PHOTO_CONTENT_ID_CONTENT_OF_PHOTO_ID FOREIGN KEY (CONTENT_ID)
REFERENCES CONTENT_OF_PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE CONTENT_ORGANIZATION_OF_PHOTO
ADD CONSTRAINT FK_CONTENT_ORGANIZATION_OF_PHOTO_PHOTO_ID_PHOTO_ID FOREIGN KEY (PHOTO_ID)
REFERENCES PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- CONTENT_ORGANIZATION_OF_ITEM Table Create SQL
CREATE TABLE CONTENT_ORGANIZATION_OF_ITEM
(
`CONTENT_ID` BIGINT NOT NULL COMMENT '상품에 들어가는 각각 내용ID. 1,2,3...',
`ITEM_ID` BIGINT NOT NULL COMMENT '내용이 구성 될 상품ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (CONTENT_ID, ITEM_ID)
);
ALTER TABLE CONTENT_ORGANIZATION_OF_ITEM COMMENT '각 상품의 내용 구성';
ALTER TABLE CONTENT_ORGANIZATION_OF_ITEM
ADD CONSTRAINT FK_CONTENT_ORGANIZATION_OF_ITEM_CONTENT_ID_CONTENT_OF_ITEM_ID FOREIGN KEY (CONTENT_ID)
REFERENCES CONTENT_OF_ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE CONTENT_ORGANIZATION_OF_ITEM
ADD CONSTRAINT FK_CONTENT_ORGANIZATION_OF_ITEM_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- AVAILABLE_COUPON Table Create SQL
CREATE TABLE AVAILABLE_COUPON
(
`ITEM_ID` BIGINT NOT NULL COMMENT '할인쿠폰 적용가능한 상품ID. 1,2,3...',
`COUPON_ID` INT NOT NULL COMMENT '할인쿠폰ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ITEM_ID, COUPON_ID)
);
ALTER TABLE AVAILABLE_COUPON COMMENT '상품에서 사용가능한 쿠폰';
ALTER TABLE AVAILABLE_COUPON
ADD CONSTRAINT FK_AVAILABLE_COUPON_COUPON_ID_DISCOUNT_COUPON_ID FOREIGN KEY (COUPON_ID)
REFERENCES DISCOUNT_COUPON (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE AVAILABLE_COUPON
ADD CONSTRAINT FK_AVAILABLE_COUPON_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- ITEM_QUESTION Table Create SQL
CREATE TABLE ITEM_QUESTION
(
`ITEM_ID` BIGINT NOT NULL COMMENT '상품 ID',
`QUESTION_ID` BIGINT NOT NULL COMMENT '문의 ID',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ITEM_ID, QUESTION_ID)
);
ALTER TABLE ITEM_QUESTION COMMENT '각 상품에 해당하는 문의';
ALTER TABLE ITEM_QUESTION
ADD CONSTRAINT FK_ITEM_QUESTION_QUESTION_ID_QUESTION_ID FOREIGN KEY (QUESTION_ID)
REFERENCES QUESTION (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE ITEM_QUESTION
ADD CONSTRAINT FK_ITEM_QUESTION_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- USING_FILTER Table Create SQL
CREATE TABLE USING_FILTER
(
`FILTER_ID` INT NOT NULL COMMENT '필터 ID. 1,2,3...',
`PHOTO_ID` BIGINT NOT NULL COMMENT 'PHOTO ID. 1,2,3...',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (FILTER_ID, PHOTO_ID)
);
ALTER TABLE USING_FILTER COMMENT 'PHOTO에 걸린 필터정보';
ALTER TABLE USING_FILTER
ADD CONSTRAINT FK_USING_FILTER_PHOTO_ID_PHOTO_ID FOREIGN KEY (PHOTO_ID)
REFERENCES PHOTO (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE USING_FILTER
ADD CONSTRAINT FK_USING_FILTER_FILTER_ID_PHOTO_FILTER_ID FOREIGN KEY (FILTER_ID)
REFERENCES PHOTO_FILTER (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- ITEM_ADDITIONAL Table Create SQL
CREATE TABLE ITEM_ADDITIONAL
(
`ITEM_ID` BIGINT NOT NULL COMMENT '추가상품이 적용되는 상품 ID',
`ADDITIONAL_ITEM_ID` BIGINT NOT NULL COMMENT '추가상품 ID',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (ITEM_ID, ADDITIONAL_ITEM_ID)
);
ALTER TABLE ITEM_ADDITIONAL COMMENT '상품과 추가상품 구성';
ALTER TABLE ITEM_ADDITIONAL
ADD CONSTRAINT FK_ITEM_ADDITIONAL_ADDITIONAL_ITEM_ID_ADDITIONAL_ID FOREIGN KEY (ADDITIONAL_ITEM_ID)
REFERENCES ADDITIONAL (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE ITEM_ADDITIONAL
ADD CONSTRAINT FK_ITEM_ADDITIONAL_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
-- ITEM_COLOR Table Create SQL
CREATE TABLE ITEM_COLOR
(
`COLOR_ID` BIGINT NOT NULL COMMENT '선택사항 ID. 1,2,3...',
`ITEM_ID` BIGINT NOT NULL COMMENT '선택항목이 적용되는 상품 ID',
`CREATED_AT` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일. 생성시점 시스템 시간',
`UPDATED_AT` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '업데이트일. 업데이트시점 시스템 시간',
`STATUS` VARCHAR(45) NOT NULL DEFAULT 'AVAILABLE' COMMENT '상태. 기본 상태 = 사용가능 (삭제 = DELETED)',
PRIMARY KEY (COLOR_ID, ITEM_ID)
);
ALTER TABLE ITEM_COLOR COMMENT '상품과 선택사항 구성';
ALTER TABLE ITEM_COLOR
ADD CONSTRAINT FK_ITEM_COLOR_ITEM_ID_ITEM_ID FOREIGN KEY (ITEM_ID)
REFERENCES ITEM (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE ITEM_COLOR
ADD CONSTRAINT FK_ITEM_COLOR_COLOR_ID_COLOR_ID FOREIGN KEY (COLOR_ID)
REFERENCES COLOR (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;