[ERD 설계] 위시 리스트 DB 설계

김찬미·2024년 6월 19일
0

CWM 프로젝트

목록 보기
7/8
post-thumbnail

위시 리스트(좋아요)란?

웹 개발에서 위시 리스트(좋아요) 기능은 사용자들이 마음에 드는 제품이나 콘텐츠를 저장해 두고, 나중에 다시 쉽게 찾을 수 있도록 하는 기능이다. 좋아요 목록, 장바구니, 위시 리스트 모두 같은 기능이라고 볼 수 있다.

백엔드에서는 일반적으로 이 기능을 구현하기 위해 테이블을 별개로 설계하고, 테이블 컬럼에 user_idcontent_id를 포함해 사용자가 버튼을 누를 때마다 row를 추가한다.


요구사항 분석

위시 리스트 페이지

  • 항목 추가

    • 사용자는 제품을 위시 리스트에 추가할 수 있어야 한다.
    • 위시 리스트 테이블에 사용자 ID와 제품 ID가 저장되어야 한다.
  • 항목 제거

    • 사용자는 위시 리스트에서 제품을 제거할 수 있어야 한다.
    • 해당 항목이 위시 리스트 테이블에서 삭제되어야 한다.
  • 조회

    • 사용자는 자신의 위시 리스트를 조회할 수 있어야 한다.
    • 제품의 상세 정보가 함께 표시되어야 한다.
  • 정렬 및 필터링

    • 사용자는 날짜를 기준으로 위시 리스트 항목을 정렬할 수 있어야 한다.
    • 사용자는 특정 조건으로 위시 리스트를 필터링할 수 있어야 한다.

이때, 위시 리스트는 마이페이지에서 확인이 가능하도록 설계할 예정이다. 위시 리스트는 기본적인 CRUD 작업이 가능해야 하고, 시간순으로 정렬(최신순, 오래된순)으로 정렬이 가능하게 작업할 것이다.


ERD 다이어그램

위시 리스트(Like) 테이블을 ERD로 표현하면 이렇다. 각 컬럼을 자세히 알아보자.

위시 리스트 테이블 구조

  • 아이디(PK): 이 테이블의 ID로 기본키를 담당한다.
  • content_id: 각 장소의 ID를 FK로 가져온다.
  • content_type_id: 각 장소의 종류(장소 테이블 참고)를 구분한다.
  • reg_dt: 사용자가 좋아요를 누른 시점을 저장한다. 정렬에 쓰일 예정.
  • user_id: 유저의 ID를 FK로 가져온다. 필터링에 쓰인다.

이 테이블은 특성상 컬럼의 대부분이 FK로 이루어져있다. 크게는 PLACE, USER 두 개와 연결되어있다고 볼 수 있다.

위시 리스트같은 경우 삭제를 누르면 바로 테이블에서 삭제되게끔 할 예정이다. 또한 시간을 저장하는 reg_dt, user_idcontent_id를 통해 정렬과 필터링을 할 수 있게 만들 것이다.


SQL문

CREATE TABLE `like` (
	`like_id`	INT	NOT NULL,
	`content_id`	String	NOT NULL,
	`content_type_id`	String	NOT NULL,
	`reg_dt`	DATETIME	NOT NULL,
	`user_id`	INT	NOT NULL
);

SQL문의 경우 향후 서술하겠지만 PLACE쪽이 굉장히 복잡하기 때문에, 일단 FK 부분을 빼고 작성했다.


마치며

위시 리스트(좋아요)는 거의 모든 웹 사이트에 쓰인다고 해도 과언이 아닐만큼 자주 사용하는 기능이다. 백엔드 개발자로서 필수로 만들 줄 알아야 하는 기능 중 하나인 만큼, 열심히 만들어보려고 한다.

profile
백엔드 개발자

0개의 댓글

관련 채용 정보