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 |