웹 개발에서 위시 리스트(좋아요) 기능은 사용자들이 마음에 드는 제품이나 콘텐츠를 저장해 두고, 나중에 다시 쉽게 찾을 수 있도록 하는 기능이다. 좋아요 목록, 장바구니, 위시 리스트 모두 같은 기능이라고 볼 수 있다.
백엔드에서는 일반적으로 이 기능을 구현하기 위해 테이블을 별개로 설계하고, 테이블 컬럼에 user_id
와 content_id
를 포함해 사용자가 버튼을 누를 때마다 row
를 추가한다.
항목 추가
항목 제거
조회
정렬 및 필터링
이때, 위시 리스트는 마이페이지에서 확인이 가능하도록 설계할 예정이다. 위시 리스트는 기본적인 CRUD
작업이 가능해야 하고, 시간순으로 정렬(최신순, 오래된순)으로 정렬이 가능하게 작업할 것이다.
위시 리스트(Like) 테이블을 ERD로 표현하면 이렇다. 각 컬럼을 자세히 알아보자.
아이디(PK)
: 이 테이블의 ID로 기본키를 담당한다.content_id
: 각 장소의 ID를 FK로 가져온다.content_type_id
: 각 장소의 종류(장소 테이블 참고)를 구분한다.reg_dt
: 사용자가 좋아요를 누른 시점을 저장한다. 정렬에 쓰일 예정.user_id
: 유저의 ID를 FK로 가져온다. 필터링에 쓰인다.이 테이블은 특성상 컬럼의 대부분이 FK로 이루어져있다. 크게는 PLACE
, USER
두 개와 연결되어있다고 볼 수 있다.
위시 리스트같은 경우 삭제를 누르면 바로 테이블에서 삭제되게끔 할 예정이다. 또한 시간을 저장하는 reg_dt
, user_id
와 content_id
를 통해 정렬과 필터링을 할 수 있게 만들 것이다.
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 부분을 빼고 작성했다.
위시 리스트(좋아요)는 거의 모든 웹 사이트에 쓰인다고 해도 과언이 아닐만큼 자주 사용하는 기능이다. 백엔드 개발자로서 필수로 만들 줄 알아야 하는 기능 중 하나인 만큼, 열심히 만들어보려고 한다.