1. 개요


쿠폰의 사용 기간 정책을 저장할 방식에 대해 고민한 내용을 정리한다.

조건부 속성 문제를 DDD + Factory Method Pattern 을 사용하여 DB 레벨에서는 nullable하게 application 레벨에서는 null을 허용하지 않게 설계하여 해결했다.

쿠폰 사용 기간에 대한 요구사항은 아래와 같다.

1. 쿠폰은 사용할 수 있는 유효 기간을 가진다. 2. 쿠폰 사용 기간 정책은 3가지로 나뉜다. 2.1. FIXED: 정해진 시작일과 종료일사이에만 사용할 수 있는 정책 2.2. AFTER: 발급일로부터 특정일 이후까지 사용할 수 있는 정책 2.3. MIXED: 발급일로부터 특정일 이후까지, 고정된 기간 내에 사용할 수 있는 정책

2. 데이터 추출


위의 요구사항을 데이터 관점에서 살펴보면 아래와 같은 데이터가 필요하다.

2.1. 조건부 속성 문제

해당 데이터를 그대로 DB에 저장하면 타입에 따른 조건부 속성 문제가 발생한다.

아래는 각 타입과 타입에 필요한 데이터를 나열한다.