요구사항 분석
- 음식
- 음식을 등록 할 수 있다.
- 음식은 식별 가능한 고유한 값과 가격, 이름으로 구성된다.
- 음식의 이름과 가격은 반드시 존재해야 한다.
- 같은 이름의 음식이 존재 할 수 있다.
- 음식 가격은 0보다 커야 한다.
- 음식의 가격 및 이름은 변경 될 수 있다.
- 음식의 가격은 0보다 작거나 null 상태가 될 수 없다.
- 변경할 음식은 반드시 존재하는 음식이어야 한다.
- 변경 요청 음식은 구성된 메뉴에 영향을 미치므로 제품이 포함된 메뉴의 가격은 0보다 커야 하며, 작다면 그 메뉴는 사용자에게 보이면 안된다.
- 한 음식이 여러 메뉴에 존재할 수 있다.
- 모든 음식을 조회 할 수 있다.
- 메뉴
- 메뉴를 등록 할 수 있다.
- 메뉴는 식별 가능한 고유한 값과 이름, 가격, 포함된 제품들로 구성된다.
- 메뉴는 한 개 또는 여러 종류의 제품으로 구성된다.
- 메뉴에 포함된 각 제품의 수량은 한 개 이상이다.
- 메뉴의 가격은 구성 제품 가격의 합계보다 클 수 없다.
- 메뉴는 가격과 제품이 반드시 포함되어야 한다.
- 메뉴는 동일한 이름의 메뉴가 존재 할 수 있다.
- 메뉴 가격 및 이름은 변경될 수 있다.
- 메뉴는 사용자에게 보여지거나 숨겨질 수 있다.
- 모든 메뉴를 조회 할 수 있다.
- 식당
- 식당을 등록 할 수 있다.
- 식당은 식별 가능한 고유한 값과 이름으로 구성된다.
- 식당 이름은 중복될 수 없다.
- 식당은 배달 가능한 최소 금액으로 구성된다.
- 모든 식당을 조회 할 수 있다.
- 주문
- 주문을 등록 할 수 있다.
- 주문 등록 시 주문한 메뉴 목록이 반드시 필요하며 주문 목록은 한 개 이상의 메뉴와 그의 수량을 포함한다.
- 주문 메뉴 목록에 포함된 메뉴들은 반드시 식당에 등록되어 있는 메뉴여야 한다.
- 주문 메뉴 목록의 가격과 식당 메뉴의 가격이 달라서는 안된다.
- 주문 메뉴 목록의 메뉴는 사용자에게 보여지는 메뉴여야 한다.
- 주문에는 식별 가능한 고유한 값이 존재한다.
- 주문에는 주문의 진행 상황을 나타내는 값이 존재한다.
(대기, 수락, 배달 중)
- 주문 진행 상황 기본 값은 대기이다.
- 주문에는 주문이 등록된 날짜 및 시간을 가지고 있다.
- 주문을 수락 할 수 있다.
- 주문을 수락하는 경우 반드시 존재하는 주문이어야 한다.
- 주문을 수락하는 경우 반드시 해당 주문의 상태는 대기이어야 한다.
- 주문을 수락 하는 경우 주문 상태를 수락으로 변경해야 한다.
- 모든 주문을 조회할 수 있다.
- 사용자
- 회원 가입이 가능하다.
- 사용자는 식별 가능한 고유한 값과 아이디, 비밀번호, 닉네임, 전화번호로 구성된다.
- 아이디, 닉네임은 중복될 수 없다.
- 비밀번호는 암호화 되어야 한다.
- 사용자에는 사용자의 권한을 나타내는 값이 존재한다.
(사용자, 주인)
- 닉네임 및 비밀번호는 변경될 수 있다.
- 로그인이 가능하다.
- 아이디와 비밀번호를 사용해 로그인을 할 수 있다.
- 사용자는 조회 기능 및 주문이 가능하다.
- 주인은 식당, 메뉴를 등록 및 수정 가능하다.
API
Untitled
ERD