🎯 설계하게된 배경
UMC 연합동아리를 하는 와중에 실제 사람들이 많이 사용하는 에플리케이션의 데이터베이스를 고객 관점에서 설계해보는 활동을 하게 되었습니다. 저희 스터디팀의 경우 "인스타그램"이 선정되어 활동을 해보게 되었습니다.
🎯 테이블 관계 분석
- User : Follow
- User : Block
- User : BestFriend 관계
한명의 User가 여러명의 팔로우, 차단, 친한 친구 목록을 가질 수 있음
반대의 경우도 가능하기 때문에 N:M 관계
- User : Board
- User : Story
한명의 User가 여러개의 게시글, 스토리를 작성 가능
반면 하나의 게시글, 스토리가 여러명의 User를 갖는건 불가능
그래서 1:N 관계
- Board : Comment
- Board : Images
- Comment : ReComment
하나의 게시글, 덧글에는 여러개의 덧글, 답글이 달릴 수 있다.
마찬가지로 하나의 게시글에는 여러개의 이미지가 포함된다.
하지만 반대의 경우는 불가능 1:N 관계
- Board : BoardLike
- Story : StoryLike
- Comment : CommentLike
- ReComment : ReCommentLike(스크린샷에는 없음)
게시글, 스토리, 덧글에는 여러개의 좋아요가 달릴 수 있다.
하지만 반대의 경우는 불가능 1:N 관계
- Board : BoardHashtag : Hashtag
- Story : StoryHashtag : Hashtag
- Comment : CommentHashtag : Hashtag(스크린샷에는 없음)
- ReComment : ReCommentHashtag : Hashtag(스크린샷에는 없음)
각각 Hashtag와 N:M 관계
- Board : BoardTagUser : User
- Images : ImageTagUser : User
- Comment : CmtTagUser : User
- Story : StoryTagUser : User
전부 여러 User를 태그할 수 있으며, User은 여러 부분에 태그될 수 있음
각각 N:M 관계
- Story : StoryImg
하나의 스토리에는 하나의 이미지만 있음 1:1관계
전부 21개의 테이블로 간략하게 만들어보았습니다.
🎯 설계 완료 이미지
