이번에 picky 프로젝트를 하면서 알림 기능을 만들게 되었다. 저번 개인 프로젝트때에는 너무 대충 만든거 같아 제대로 설계를 해보고 싶었다. 알림 테이블을 설계한 과정을 정리한다.
알림은 다음과 같이 많은 상황들에 발생한다.
알림 기능은 보내는 사람과 받는 사람이 존재한다. 보내는 사람은 공지를 보내는 관리자일 수도 있고 자신이 쓴 게시글에 답글을 단 사람일 수도 있다.
알림을 클릭하면 알림이 발생한 페이지로 이동 하게 된다. 예를 들면 댓글 알림을 클릭하면 해당 댓글 페이지로 이동하게 된다. 이렇게 설계할 경우 게시글이나 댓글 등 알림의 원인이 된 테이블 레코드에 대한 정보도 담겨 있어야 했다.
연관된 모든 알림 대상을 외래키로 맵핑 할경우 외래키 종류가 많아지고 확장성도 떨어지게 된다. 그래서 알림 대상들과 그 테이블을 엔티티 타입이라는 필드로 구분하고 해당 엔티티의 기본키는 엔티티 키라는 필드를 추가 했다.
알림의 원인이 되는 테이블은 개발과정에서 늘어나기 때문에 따로 테이블로 분리했다.
