[빙터뷰] DB설계

impala·2023년 3월 31일
0
post-thumbnail

고려사항

빙터뷰의 주요 기능을 정리하자면

  1. 면접 연습 영상 업로드
  2. 면접 예상질문 등록
  3. 실시간 면접 연습

정도라고 말할 수 있기 때문에 데이터베이스에는 다음과 같은 테이블이 필요하다

  • 회원 테이블
  • 영상 게시판을 관리하는 테이블
  • 영상 게시판의 댓글을 관리하는 테이블
  • 예상질문을 관리하는 테이블
  • 태그정보를 보관하는 테이블

각각의 테이블은 연관관계를 가지고, 필요시 중간테이블을 추가하여 연관관계를 표시한다. 또한 모든 테이블을 정규화하여 DB를 설계한다.

DB 스키마

DB 설명

  • MEMBER : 사용자 테이블
  • BOARD : 영상 게시판 게시글 테이블
  • BOARD_MEMBER_LIKE : 영상 게시판 좋아요 기능 전용 중간 테이블
  • COMMENT : 댓글 테이블
  • COMMENT_MEMBER_LIKE : 댓글 좋아요 기능 전용 중간 테이블
  • QUESTION : 면접 예상 질문 테이블
  • MEMBER_QUESTION_SCRAP : 스크랩 기능 전용 중간 테이블
  • TAG : 태그 테이블
  • TAG_QUESTION : 질문에 달린 태그 관리용 중간 테이블
  • TAG_MEMBER : 사용자 관심직무 관리용 중간 테이블

빙터뷰의 데이터베이스는 총 5개의 주요 테이블(Member, Board, Comment, Question, Tag)과, 5개의 중간 테이블(xxx_Like, MEMBER_QUESTION_Scrap, Tag_xxx)로 구성되어 있다.

각각의 중간 테이블들은 주 테이블 사이의 다대다 관계를 매핑하기 위해 만들어두었으며, 비즈니스적으로는 다음과 같은 이유 때문에 중간 테이블을 만들어 두었다.

  • xxx_Like : 좋아요 기능구현을 위한 테이블로, 한 사용자가 게시글이나 댓글에 좋아요를 누른 기록을 유지한다. 만약 같은 사용자가 좋아요 표시한 글에 다시 좋아요를 누르면 취소되는 기능을 위해 중간 테이블을 두어 구현하였다.
  • MEMBER_QUESTION_SCRAP : 위의 좋아요 기능과 마찬가지로 사용자가 원하는 질문을 스크랩하기 위한 테이블로 다대다 관계 매핑을 위해 중간 테이블을 구축하였고, 스크랩한 질문들을 시간순으로 정렬할 수 있도록 하기 위해 매핑정보 외의 필드를 추가하였다.
  • Tag_xxx : Question에 매핑되는 태그는 말 그대로 질문을 분류하기 위한 태그이고, Member에 매핑되는 태그는 사용자의 관심직무, 관심기업등을 표시하기 위한 태그이다. 역시 다대다 매핑을 위해 중간 테이블로 구현하였다.

0개의 댓글