개인 프로젝트의 설계 과정에 대해 기록한다.
이번 프로젝트는 음식 배달 서비스로 이 서비스에 필요한 도메인들이 어떤 것들이 있을지 생각해 보았다.
그 결과 배달을 할 식당
,
식당에서 관리하는 음식
,
사용자에게 판매할 메뉴
,
어떠 메뉴를 주문하는지 관리할 주문
,
서비스를 이용할 사용자
도메인을 생각했고
각 도메인에 필요한 필드를 정리했다.
ex) Menu 도메인
위에서 도메인과 필드를 전체적으로 정리 후 이를 통해
각 도메인에 어떤 요구사항이 프로젝트에 필요한지 작성해보았다.
ex) 음식 요구사항
1. 음식
1. 음식을 등록 할 수 있다.
1. 음식은 식별 가능한 고유한 값과 가격, 이름으로 구성된다.
2. 음식의 이름과 가격은 반드시 존재해야 한다.
3. 같은 이름의 음식이 존재 할 수 있다.
4. 음식 가격은 0보다 커야 한다.
2. 음식의 가격 및 이름은 변경 될 수 있다.
1. 음식의 가격은 0보다 작거나 null 상태가 될 수 없다.
2. 변경할 음식은 반드시 존재하는 음식이어야 한다.
3. 변경 요청 음식은 구성된 메뉴에 영향을 미치므로 제품이 포함된 메뉴의 가격은 0보다 커야 하며, 작다면 그 메뉴는 사용자에게 보이면 안된다.
3. 한 음식이 여러 메뉴에 존재할 수 있다.
4. 모든 음식을 조회 할 수 있다.
링크 : 요구사항 정리
위의 과정을 통해 불필요한 필드 삭제 및 추가 필드 추가 등의 작업을 통해 도메인을 정리했다.
이후 ERD 툴을 사용해 사용할 도메인의 필드가 사용할 타입 정보를 입력했다.
개별 도메인에 대한 ERD 작성이 끝나고 테이블 연관관계를 어떻게 구성할지 생각한 후 외래키를 사용해 관계를 맺고 필요한 경우 경유 테이블을 추가했다.
아래는 완성한 ERD이다.
작성된 ERD를 기반으로 서비스에 사용할 REST API를 설계했다.
초기 단계인 관계로 각 도메인에 대한 CRUD API로 구성하고 프로젝트 진행과정에서 필요한 API를 추가하거나
요구사항 변경에 의한 API를 변경할 가능성이 높다.