Micro Blog Database
중앙대학교컴퓨터공학부 데이터베이스 시스템 1조
Tumblr(텀블러) 사이트에 대한 데이터베이스 응용설계 - 중간제출
장익환(20060957) 이상태(20115695) 조동경(20112104) 이소라(20111316) 박소연(20101524)
3응용 분야
• 우리팀은웹 서비스 중 “블로그”를 응용 분야의 한 주제로 선정하였다.
• 네이버 블로그, 티스토리, 이글루스 등 수 많은 블로그 플랫폼 중에 이러한 방대한 기능을 배제하고, 기
본적인 블로그의 기능인 “포스팅” 기능을 세분화하여 여기에 추가적으로 소셜 네트워크 기능(SNS)을
제공하는 응용 분야를 생각하였다.
• 본 응용분야는 기본적인 사용자 처리(회원가입,로그인 등)의 기능과 블로깅(글, 그림, 오디오, 비디오)
기능, 그리고 추가적으로 SNS기능의 일부인 친구관리 및 타임라인, 채팅등의 기능을 처리한다.
• 추가적으로 사용자들이 자신의 블로그를 꾸밀 수 있는 기능과 스킨을 사고팔 수 있는 마켓플레이스를
처리한다.
참조 사이트
텀블러(tumblr)는 사용자들이문자, 그림,
영상, 링크, 인용, 소리를 그들의 조그마한
텀블로그에 게재할 수 있게 도와 주는 마이크
로블로그 플랫폼이자 웹사이트이다.
!
사용자들은 다른 사용자를 팔로우(follow)
할 수 있고, 또한 블로그를 꾸밀 수 있다. 사
용자는 또한 자신이 직접 스킨을 제작하고 판
매할 수 있는 마켓 플레이스를 갖추고 있다.
www.tumblr.com
6
기능별 SQL
•회원 정지처리& 탈퇴
update TBL_USER set state = 2 where user_id = ‘lee’ ‘ 회원정지!
!
update TBL_USER set state = 0 where user_id = ‘lee' ‘ 탈퇴
37
* 사용자의 경우 state 1이 회원가입 상태, 0이 탈퇴상태, 2가 회원정지 상태
38.
기능별 SQL
•친구 추가
INSERTINTO `tbl_friends` (`SEQ`,`SEQ_FRIEND`,`SEQ_USER`)
VALUES (0, !
(select SEQ from tbl_user where user_name=‘장익환’ limit 1), !
(select SEQ from tbl_user where user_name=‘강수현’ limit 1)),!
(0, !
(select SEQ from tbl_user where user_name=‘장익환’ limit 1), !
(select SEQ from tbl_user where user_name=‘황정윤’ limit 1));
38
* 위의 경우는 이름이 장익환인 회원에게 이름이 강수현, 황정윤 인 친구를 추가하는 질의
기능별 SQL
•모든 회원의등록된 글을 DESC순서로 가져오는 질의
select!
! A.SEQ,A.POST_TYPE ,(case A.POST_TYPE !
! ! when 0 then (select title from TBL_POST_WRITINGS where SEQ = A.SEQ)!
! ! when 1 then (select content from TBL_POST_IMAGE where SEQ = A.SEQ)!
! ! when 2 then (select quote from TBL_POST_QUOTE where SEQ = A.SEQ)!
! ! when 3 then (select title from TBL_POST_LINK where SEQ = A.SEQ)!
! ! when 4 then (select title from TBL_POST_CHAT where SEQ = A.SEQ)!
! ! when 5 then (select url from TBL_POST_AUDIO where SEQ = A.SEQ)!
! ! when 6 then (select content from TBL_POST_VIDEO where SEQ = A.SEQ)!
! end) AS TITLE,A.CREATE_DATE,C.USER_NAME,A.HIT_VIEWER!
from!
! TBL_POSTS A,!
! TBL_BLOG B,!
! TBL_USER C!
where!
! A.SEQ_BLOG = B.SEQ!
! and B.SEQ_USER = C.SEQ!
order by A.HIT_VIEWER desc
41
42.
기능별 SQL
•내 친구가등록한 글 목록
select !
! (select user_name from tbl_user where seq = B.seq_user) AS USER_NAME,
! A.CREATE_DATE,!
! A.HIT_VIEWER,!
! A.HIT_LIKE
from !
! tbl_posts A,!
! tbl_blog B!
where !
! A.`SEQ_BLOG` = B.`SEQ` !
! and B.`SEQ_USER` in !
! ! (select SEQ_FRIEND from tbl_friends !
! ! where SEQ_USER = !
! ! ! (select user_name from tbl_user where email='matthew.chang@me.com’)!
! ! )
42
43.
기능별 SQL
•내 친구가등록한 글 중 가장 Like가 많은 글
select !
! (select user_name from tbl_user where seq = B.seq_user) AS USER_NAME,
! A.CREATE_DATE,!
! A.HIT_VIEWER,!
! A.HIT_LIKE
from !
! tbl_posts A,!
! tbl_blog B!
where !
! A.`SEQ_BLOG` = B.`SEQ` !
! and B.`SEQ_USER` in !
! ! (select SEQ_FRIEND from tbl_friends !
! ! where SEQ_USER = !
! ! ! (select user_name from tbl_user where email='matthew.chang@me.com’)!
! ! )!
order by A.HIT_LIKE DESC LIMIT 1
43
44.
기능별 SQL
•날짜별 등록된포스트 갯수
select!
! C.CREATE_DATE,!
! (SELECT COUNT(*) FROM tbl_posts where create_date = C.CREATE_DATE) AS
NUM_WRITING_POST!
from!
! tbl_user A,!
! tbl_blog B,!
! tbl_posts C!
where!
! A.SEQ = B.SEQ_USER!
! and B.SEQ = C.SEQ_BLOG!
group by C.CREATE_DATE
44
45.
기능별 SQL
•일자별 가입자숫자
select!
! A.JOIN_DATE,!
! (SELECT COUNT(*) FROM tbl_user where join_date = A.JOIN_DATE) AS NUM_JOIN_USER!
from!
! tbl_user A!
group by A.JOIN_DATE
45