백엔드 실습(2)

wltjd1688·2025년 3월 9일

풀사이클

목록 보기
28/74
post-thumbnail

이전에 만든 API를 통해 ERD를 작성하였다.
강의를 수강하면서 이걸 어떻게 구현하지 하는 고민을 하게했던 주문서 작성과 주문내역 부분을 따로 cartItemsorderItems 테이블로 만들어 관리하는것으로 이부분에 대한 이해를 높일 수 있었다.

###추가수정

  • categories테이블 추가

DBML코드는 다음과 같다.

indexes  {
    (A, B) [unique]
  }

DBML의 문법 중 하나로 여기서는 A와B가 딱 한개씩만 존재하는 유일성을 보장한다는 의미다.
AB한쌍 왜에는 존재하지 않도록 만들어준다.

Table users {
  id integer [primary key]
  email varchar
  name varchar
  password varchar
}

Table categories {
  id integer [primary key]
  categorie varchar

  indexes {
    (id, categorie) [unique]
  } 
}

Table books {
  id integer [primary key]
  title varchar
  category_id integer
  format varchar
  isbn varchar
  summary text
  description text
  author varchar
  pages integer
  index text
  price integer
  like_count integer
  pubDate timestamp
}

Table likes {
  user_id integer
  book_id integer

  indexes {
    (user_id, book_id) [unique]
  }
}

Table cartItems {
  id integer [primary key]
  user_id integer
  book_id integer
  count integer

  indexes {
    (user_id, book_id) [unique]
  }
}

Table delivery {
  id integer [primary key]
  user_id integer
  address varchar
  receiver varchar
  contact varchar
}

Table orders {
  id integer [primary key]
  user_id integer
  delivery_id integer
  total_price integer
  created_at timestamp
  // 주문에 대한 상세 상품 정보는 order_items 테이블로 관리
}

Table order_items {
  id integer [primary key]
  order_id integer
  book_id integer
  count integer
}

ref { books.category_id > categories.id}

ref { delivery.user_id > users.id}

ref { cartItems.user_id > users.id }
ref { cartItems.book_id > books.id }

ref { likes.user_id > users.id }
ref { likes.book_id > books.id }

ref { orders.user_id > users.id }
ref { orders.delivery_id > delivery.id }

ref { order_items.order_id > orders.id }
ref { order_items.book_id > books.id }

기존 API와 다른점

첫번째

  • 이전: 주문테이블에서 리스트 형태로 보관했음
  • 이후: API형태와 다르게 구현할 수 있게 되었다.

두번째

  • 이전: api에서는 장바구니를 주문하기로 넘어갈때 제거했음
  • 이후: 주문취소를 하면 장바구니가 사라져버리는것을 간과했음 => ERD를 구현하면서 order가 끝나면 주문목록이 사라지도록 수정해야함.

API만들고 ERD를 만드는 수업을 들어서 그런가 확실히 이해가 빠르게 되고, ERD를 짜면서 내가 작성한 API가 어떤 부분을 수정할지, 잘한지를 더 명확히 알 수 있었다.

profile
일단 해!!!!

0개의 댓글