728x90
반응형
SMALL

안녕하세요, 유튜브를 통해서 데이터모델링을 학습하고 자료를 남깁니다.

 

이전 [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (1) 의 게시글을 이어서 작성을 하였습니다.

1. 데이터 모델링

  • 1:N의 관계를 갖는 테이블들은 FK를 만들어서 만듭니다.

하나의 테이블이 여러 개의 테이블의 정보를 가져와야 하는 경우

여러 테이블에 FK를 등록을 합니다.

1. 카테고리, 해시태그

카테고리와 해시태그의 경우 1:M 관계의 테이블이므로

여러 개의 테이블에 FK를 등록한다.

  • N:M의 관계를 갖는 테이블들은 중간 테이블을 만들어서 FK를 몰아 넣습니다.

예시) 게시글-해시태그, 팔로우, 신고, 좋아요, 조회수

1. 게시글-해시태그

게시글 : 해시태그 = N:M 관계의 테이블

해시 태그 테이블을 만들고,

두 테이블을 연결하기 위한 게시글-해시태그 중간 테이블을 만든다.

2. 좋아요

회원 : 게시글 = N:M 관계의 테이블

두 테이블을 연결하기 위한 좋아요 중간 테이블을 만든다.

3. 신고

회원 : 게시글 N:M 관계의 테이블

신고한 회원과 해당 게시물과의 관계는 N:M이다.

그래서 신고라는 중간 테이블을 만들어서 관계를 만들어 준다.

추가로 신고 테이블에 신고 사유를 추가하여

회원의 해당 게시글에 대한 신고 사유를 남길 수 있도록 한다.

4. 조회수

회원 : 게시글 = N:M 관계의 테이블

두 테이블을 연결하기 위한 중간 테이블을 만든다.

이유는 한 로그인 회원의 새로고침을 통한 조회수 올리기 방지 기능을 위하여 

어떤 회원이 어떤 게시글을 조회했는지를 알아야 한다.

조회수 테이블을 통해서 각 게시글의 회원들의 조회수를 통계 수치로 구할 수 있다.

5. 팔로우

N:M 관계의 테이블

회원 테이블의 사용자가 다른 사용자를 팔로우 하는 기능이다.

팔로우라는 중간 테이블을 만들고

FK를 몰아줌으로써 만든다.

  • 통계 수치는 따로 테이블을 빼서 조회합니다.

1. 좋아요수와 조회수

좋아요 테이블과 조회수 테이블에서 

직접 통계한 수치를

조회할 때 한꺼번에 조회합니다.

게시글의 좋아요수와 조회수는 

통계의 부분에 속합니다.

이러한 경우 

직접 테이블을 통해서 수치를 구할 수 있도록 하고

컬럼에서는 제외합니다.

 

감사합니다.

https://www.youtube.com/watch?v=8jpyt-T0Fz0&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=13

 

728x90
반응형
LIST