안녕하세요, 유튜브를 통해서 데이터모델링을 학습하고 자료를 남깁니다.
이전 [실습] 요구사항을 보고 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
'DB' 카테고리의 다른 글
[데이터모델링] 4.1. [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (1) (0) | 2024.10.30 |
---|---|
[데이터모델링] 3.4 [규칙 5] 가짜 중복과 진짜 중복을 구별해라 (1) | 2024.10.30 |
[데이터모델링] 3.3 [규칙 4] 데이터 중복이 발생하는 컬럼이 있는 지 확인해라 (1) | 2024.10.29 |
[데이터모델링] 3.2 [규칙 1] 한 칸에는 한 가지 정보만 들어가도록 만들어라 - 2 (0) | 2024.10.29 |
[데이터모델링] 3.1 [규칙1] 한 칸에는 한 가지 정보만 들어가도록 만들어라 - 1 (2) | 2024.10.29 |