스키마(Schema)
데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명 -> 데이터베이스의 청사진이라고 할 수 있음!
그렇다면, 인스타그램의 포스트를 클릭 했을 때 나오는 화면을 보고 스키마를 구성해보자
인스타그램에서는 여러 개의 사진(A)을 올릴 수 있습니다. 사진을 업로드할 때, 사진을 설명하는 간단한 글(C)이 올라갑니다.
게시물이 업로드되면 다른 사용자는 이 게시물에 댓글(E)을 달 수 있고, 좋아요(B) 를 눌러 관심을 표할 수 있습니다.
게시물에 #감성
#맛집
등의 해시태그(D)를 남길 수 있으며, 이 해시태그를 누르면 이 해시태그가 사용된 모든 게시물을 한 데 모아 볼 수 있습니다.
인스타그램에서 친구 관계는 팔로워(follower)와 팔로잉(following)으로 나뉩니다. 김코딩이 최해커를 following 하면, 최해커의 피드가 김코딩의 홈 화면에 나타납니다. 최해커의 입장에서는 김코딩이 follower로 추가됩니다.
더미 스키마
예시를 보고 구성해 본 스키마. 아직은 정신 없고 조잡하다
위 더미 스키마를 보고 dbdiagram.io에서 코드를 활용해 더 깔끔히 만들어 보았다.
dbdiagram.io에서 코드를 기반으로 자동 생성 된 다이어그램
dbdiagram.io 코드
table users {
id varchar [pk]
img varchar
}
table post {
id int [pk]
user_id int
user_img varchar
img varchar
text varchar
like int
}
Ref: users.id > post.user_id
Ref: users.img > post.user_img
Ref: like.count > post.like
table hashtag {
post_text int
comment_text varchar
}
Ref: post.text > hashtag.post_text
Ref: comment.text > hashtag.comment_text
table comment {
id int [pk]
user_id int
user_img varchar
text varchar
like int
}
Ref: users.id > comment.user_id
Ref: users.img > comment.user_img
table follow {
user_id int
user_img varchar
follow_count int
}
Ref: users.id > follow.user_id
Ref: users.img > follow.user_img
table follower {
user_id varchar
user_img varchar
follower_count int
}
Ref: users.id > follower.user_id
Ref: users.img > follower.user_img
table like {
count int
}
코드가 직관적이어서 이해하기 쉬웠다.
페이지 구성요소들을 떠올리면서 설계해본 스키마 디자인 스프린트!