테이블에 JSON 형식으로 값을 저장하려고 합니다
JSON 전용 타입 MySQL 5.7+ 에서 지원
컬럼 타입을 JSON으로 지정 가능
| EVENT | EVENT_PK EVENT_NAME EVENT_START_DATE EVENT_END_DATE EVENT_TARGET_ACCOUNT EVENT_TARGET_CATEGORY EVENT_DESCRIPTION EVENT_DISCOUNT_RATE EVENT_IMAGE |
INT VARCHAR(200) DATE DATE JSON JSON VARCHER(20000) NUMBER(3) VARCHAR(255) |
이벤트 PK 이벤트 이름 이벤트 시작일 이벤트 종료일 이벤트 대상 이벤트 상품 카테고리 이벤트 설명 할인율 이벤트 이미지 |
예를 들어 이렇게 EVENT 테이블을 만들려고 한다
여기서 JSON 타입은 EVENT_TARGET_ACCOUNT와 EVENT_TARGET_CATEGORY 이렇게 존재한다
EVENT_TARGET_ACCOUNT JSON 예시 먼저 보도록 하자
EVENT_TARGET_ACCOUNT
금액 기준 대상 계정
{ type: "AMOUNT", amount: number }
amount : 숫자로 표시된 금액 이상인 계정이 이벤트 대상
예시 : { type : "AMOUNT", "amount" : 50000 }
50,000원 이상 결제한 계정만 이벤트 대상
가입일 기준 대상 계정
{ type: "JOINED", startDate: string(YYYY-MM-DD), endDate: string(YYYY-MM-DD) }
startDate : 이벤트 대상 시작 가입일
endDate : 이벤트 대상 종료 가입일
예시 : { "type": "JOINED", "startDate": "2025-01-01", "endDate": "2025-12-31" }
모든 계정
{ "type": "ALL" }
이벤트 대상 제한 없음
가입, 결제 금액, 멤버 타입 등 상관없이 전체 계정 대상
회원 유형 기준 대상 계정
{ type: "MEMBER_TYPE", memberType: "LOCAL"|"KAKAO"|"NAMER"|... }
memberType : 특정 회원 유형만 이벤트 대상
예시 : { "type": "MEMBER_TYPE", "memberType": "KAKAO" }
다른 유형 "LOCAL", "MEMBER" 등
EVENT_TARGET_CATEGORY
| 카테고리 | 설명 |
| TREE | 크리스마스 트리 같은 큰 장식용 나무 상품 |
| LIGHT | 조명/전구 관련 상품 (LED, 장식용 전구 등) |
| BALL | 장식용 볼(구형 장식) 상품 |
| FIGURE | 피규어/캐릭터 장식 상품 (작은 장식물) |
| WREATHS | 리스 (문이나 벽에 거는 장식용 화환) |
| ETC | 기타 이벤트 관련 장식 상품 |
EVENT_TARGET_CATEGORY는 상품의 종류를 JSOn 배열로 저장 가능
ex) ["TREE", "LIGHT", "BALL"]
이벤트에 트리, 조명, 장식 볼 상품만 적용됨
나중에 DB나 코드에서 이 배열을 조회해서 해당 카테고리 상품만 이벤트 적용 가능
JSON으로 여러 카테고리를 한 번에 저장하면 유연하게 이벤트 범위를 지정가능
Java에서는 List<String>이나 Enum을 사용해서 매핑하면 안전함
'🎅 오너먼트 프로젝트' 카테고리의 다른 글
| application.properties에 Spring Boot 설정하기 (0) | 2026.01.30 |
|---|---|
| Lombok 설정하고 테이블 DTO 만들기 (0) | 2026.01.27 |
| 오너먼트 중간 프로젝트 / 중간 마무리 (0) | 2026.01.09 |
| 카카오 결제 : 신 API 이용한 결제 코드 분석해보기 - 1 (0) | 2026.01.07 |
| [ 스크립트 공유 ] 장바구니 비동기 처리와 커뮤니티 일화 (0) | 2026.01.06 |