BaGyun
빠균's 개발노트
BaGyun
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • Today I Learned (44)
      • 오류 (8)
      • JavaScript (15)
      • TypeScript (9)
      • NodeJS (0)
      • NestJS (0)
      • Database (3)
      • ORM (1)
      • 알고리즘 (2)
      • 개인공부 (4)
      • Deploy (0)
      • Git (1)
    • 개인프로젝트 (4)
    • 알고리즘 (14)
      • 프로그래머스 (14)
    • 면접질문 (5)
    • 회고 (3)

인기 글

반응형

블로그 메뉴

  • 홈
  • 태그
  • 방명록
hELLO · Designed By 정상우.
BaGyun

빠균's 개발노트

[Database] 인스타그램 스키마 디자인
Today I Learned/Database

[Database] 인스타그램 스키마 디자인

2022. 4. 8. 15:57

 

인스타그램 예시

1. 게시물(Post) 작성 기능

인스타그램에서는 여러 개의 사진(A)을 올릴 수 있습니다. 사진을 업로드할 때, 사진을 설명하는

간단한 글(C)이 올라갑니다.

2. 게시물에 댓글 달기 및 좋아요 기능

게시물이 업로드되면 다른 사용자는 이 게시물에 댓글(E)을 달 수 있고, 좋아요(B) 를 눌러 관심을 표할 수 있습니다.

3. 해시태그 기능

게시물에 #감성 #맛집 등의 해시태그(D)를 남길 수 있으며, 이 해시태그를 누르면 이 해시태그가 사용된 모든 게시물을 한 데 모아 볼 수 있습니다.

4. follow 기능

인스타그램에서 친구 관계는 팔로워(follower)와 팔로잉(following)으로 나뉩니다. 김코딩이 최해커를 following 하면, 최해커의 피드가 김코딩의 홈 화면에 나타납니다. 최해커의 입장에서는 김코딩이 follower로 추가됩니다.

위 예시를 바탕으로 스키마 디자인을 만들기위해 서로의 관계를 생각해봤다.

 

사용자(user) / A = 게시글(post) / B = 좋아요(like) / C = 글(Writing) / D =해시태그(hastag) / E =댓글(comment) / 팔로우(follow)

를 큰 틀로 잡고,

 

 

데이터베이스 설계

user : post = 1 : N

  • 하나의 user는 여러 개의 post를 작성할 수 있다.
  • 한 개의 post는 하나의 user만 작성할 수 있다.

post : Writing = 1 : 1

  • 한 개의 post는 한 개의 Writing를 작성할 수 있다.
  • 한 개의 Writing는 한 개의 post에 의해서 작성된다.

post : comment = 1 : N

  • 한 개의 post는 여러 개의 comment가 달릴 수 있다.
  • 한 개의 comment는 한 개의 post에만 작성될 수 있다.

post : like = 1 : N

  • 한 개의 post는 여러 개의 like를 받을 수 있다.
  • 한 개의 like는 한 개의 post에만 적용될 수 있다.

post : hastag = 1 : 1  ➡️  N : N

처음 생각 :

  • 한 개의 post는 한 개의 hastag를 가질 수 있다.
  • 한 개의 hastag는 한 개의 post에만 달릴 수 있다.

고민한 후 :

  • 한 개의 post는 여러 개의 hastag를 가질 수 있다.
  • 한 개의 hastag는 여러 개의 post에 달릴 수 있다.

그렇게 생각한 이유 :

  • 처음엔 한개의 포스트에 한개한개의 해쉬태그를 담는다라는 식으로 생각을 했었다.
  • 하지만, 해쉬태그를 눌렀을 때 모든 게시물의 포스트를 한데 모아볼 수 있다는 것과 한 게시물에서 여러가지의 해쉬태그를 사용할 수 있는 것을 생각해보니 N:M이 맞지 않을까 생각을 했다.

user : like = 1 : N

  • 하나의 user는 여러 개의 like를 할 수 있다. (여러 post에 like를 적용할 수 있다.)
  • 한 개의 like는 하나의 user에 의해서만 적용될 수 있다.

user : comment = 1 : N

  • 하나의 user는 여러 개의 comment를 달 수 있다. (여러 post에 comment를 적용할 수 있다.)
  • 한 개의 comment 하나의 user에 의해서만 달릴 수 있다.

user : follower = N : M

  • 하나의 user는 여러 명의 follower를 가질 수 있다.
  • 하나의 follower 여러 명의 user로부터 팔로잉 받을 수 있다.

스키마 디자인

 

'Today I Learned > Database' 카테고리의 다른 글

[DataBase] 데이터베이스와 SQL  (0) 2022.04.21
[DataBase] MVC, ORM이란?  (0) 2022.04.13
    'Today I Learned/Database' 카테고리의 다른 글
    • [DataBase] 데이터베이스와 SQL
    • [DataBase] MVC, ORM이란?
    BaGyun
    BaGyun

    티스토리툴바