요구사항 분석

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

API

Untitled

ERD

erd.png