Micro Blog Database
중앙대학교 컴퓨터공학부 데이터베이스 시스템 1조

Tumblr(텀블러) 사이트에 대한 데이터베이스 응용설계 - 중간제출
장익환(20060957) 이상태(20115695) 조동경(20112104) 이소라(20111316) 박소연(20101524)
2
INDEX
• 응용 분야
• 참조 사이트
• 응용의 기능
• ERD & Scheme
• 기능별 SQL
• UI설계
3
응용 분야
3응용 분야
• 우리팀은 웹 서비스 중 “블로그”를 응용 분야의 한 주제로 선정하였다.
• 네이버 블로그, 티스토리, 이글루스 등 수 많은 블로그 플랫폼 중에 이러한 방대한 기능을 배제하고, 기
본적인 블로그의 기능인 “포스팅” 기능을 세분화하여 여기에 추가적으로 소셜 네트워크 기능(SNS)을
제공하는 응용 분야를 생각하였다.
• 본 응용분야는 기본적인 사용자 처리(회원가입,로그인 등)의 기능과 블로깅(글, 그림, 오디오, 비디오)
기능, 그리고 추가적으로 SNS기능의 일부인 친구관리 및 타임라인, 채팅등의 기능을 처리한다.
• 추가적으로 사용자들이 자신의 블로그를 꾸밀 수 있는 기능과 스킨을 사고팔 수 있는 마켓플레이스를
처리한다.
5
참조 사이트
참조 사이트
텀블러(tumblr)는 사용자들이 문자, 그림,
영상, 링크, 인용, 소리를 그들의 조그마한
텀블로그에 게재할 수 있게 도와 주는 마이크
로블로그 플랫폼이자 웹사이트이다. 
!
사용자들은 다른 사용자를 팔로우(follow)
할 수 있고, 또한 블로그를 꾸밀 수 있다. 사
용자는 또한 자신이 직접 스킨을 제작하고 판
매할 수 있는 마켓 플레이스를 갖추고 있다.
www.tumblr.com
6
7
응용의 기능
응용의 기능
•텀블러 응용 기능
텀블러 DB
포스팅
팔로잉
친구 관리
타임 라인
글 쓰기, 수정, 삭제
글/사진/비디오/오디오
…
스킨
스킨 구매
스킨 제작
블로그 회원관리
계정
8
9
ERD & Scheme
ERD 테이블 10
블로그
사용자
포스트
테마
ERD 테이블 11
•사용자
Table Attributes
TBL_USER
사용자SEQ(PK,AI), 사용자ID, 비밀번호, 이메일, 가입일자,사 용
자프로필사진URL,상태(0:탈퇴 1:가입 2:일시정지), 탈퇴일자, 정
보수정일자, 사용언어, 사용 포스팅 툴
TBL_FRIENDS 친구목록SEQ(PK,AI), 친구 SEQ(FK), 사용자 SEQ(FK)
TBL_BUY_LIST
구매목록SEQ(PK,AI), 구매한사용자SEQ(FK), 구매한 테마
SEQ(FK), 구매일자, 구매방법
TBL_LIKE_LIST
좋아요목록 SEQ(PK,AI), 좋아요 일자, 좋아요한 포스트
SEQ(FK), 좋아요한 사용자 SEQ(FK)
ERD 테이블 12
•블로그
Table Attributes
TBL_BLOG 블로그SEQ(PK,AI), 블로그 제목, 만든이 ID(FK), URL, 블로그 설명, 작성일자, 방문자
TBL_BLOG_OPTION 블로그 옵션 SEQ(PK,AI), 미리보기옵션, 페이지당 포스트갯수, 텀블러 공유 옵션, 모바일 레이아웃 옵션, 새창으로 옵션
TBL_BLOG_VIEW_OPTION 블로그 보기 옵션 SEQ(PK,AI), 작은 레이아웃 옵션, 빨간배경 옵션, 파란배경 옵션, 칼라 상단바 옵션, 날짜숨기기 옵션, 배경숨기기 옵션, 탭 숨기기
옵션, 노트 숨기기 옵션, 동적크기 옵션, 무한스크롤 옵션, 소셜링크버튼 없애기 옵션
TBL_BLOG_SOCIAL 블로그 소셜 SEQ(PK,AI), Github URL, 비핸스 URL, 포스퀘어 URL, 라스트FM URL, 구글분석도구 URL, 트위터 URL, 페이스북 URL, 드리블
URL, 플리커 URL, 스카이프 URL, 데비안아트 URL, 비메오 URL, 디스쿼스 URL
ERD 테이블 13
•포스트
Table Attributes
TBL_POSTS
포스팅SEQ(PK,AI), 블로그 SEQ(FK), 포스트 타입(0 : 글 1 : 사진 2 :
인용구 3 : 링크 4 : 채팅 5 : 오디오 6 : 동영상), 작성일, 수정일, 작성자IP,
사용자임의URL, 옵션1, 출처URL, 조회수, 라이크한 수
TBL_TAGS 태그SEQ(PK,AI), 포스트SEQ(fk), 태그이름
TBL_POST_WRITIN
GS
포스팅 SEQ(PK,FK), 제목, 내용
TBL_POST_IMAGE 포스팅 SEQ(PK,FK), 내용
TBL_POST_IMAGE
_LIST 포스팅 SEQ(PK,FK), 내용, URL
TBL_POST_AUDIO 포스팅 SEQ(PK,FK), URL
TBL_POST_VIDEO 포스팅 SEQ(PK,FK), URL, 내용
TBL_POST_CHAT 포스팅 SEQ(PK,FK), 제목, 질문내용
TBL_POST_LINK 포스팅 SEQ(PK,FK), URL, 제목, 내용
TBL_POST_QUOTE 포스팅 SEQ(PK,FK), 격언내용, 출처
ERD 테이블 14
•테마
Table Attributes
TBL_THEME 테마SEQ(PK,AI), 제작자 유저 SEQ(FK), 제목, 요약, 내용, 소스코드, 섬네일URL, 유/무료 옵션, 가격, 카테고리 SEQ(FK), 뷰카운트, 판매숫자
TBL_THEME_SCREENSHOT 스크린샷 SEQ(PK,AI), 테마SEQ(FK), 스크린샷 URL
TBL_CATEGORIES 카테고리 SEQ(PK,AI), 카테고리명
15
기능별 SQL
기능별 SQL
•사용자 테이블 생성(TBL_USER)
CREATE TABLE `TBL_USER` (

`SEQ` INT(11) NOT NULL,

`USER_ID` VARCHAR(20) NOT NULL,

`PASSWORD` VARCHAR(20) NOT NULL,

`EMAIL` VARCHAR(100) NOT NULL,

`USER_STATUS_SEQ` INT(11) NOT NULL,

`USER_NAME` VARCHAR(20) NOT NULL,

`JOIN_DATE` DATETIME NOT NULL,

`USER_PROFILE_URL` VARCHAR(256) NULL DEFAULT NULL,

`STATUS` INT(11) NULL DEFAULT NULL COMMENT '0 : 탈퇴 1 : 가입',

`DROP_DATE` DATE NULL DEFAULT NULL,

`MODIFY_DATE` DATE NULL DEFAULT NULL,

`LANGUAGE` VARCHAR(512) NOT NULL,

`IS_EDIT_TOOL` VARCHAR(512) NOT NULL,

PRIMARY KEY (`SEQ`))

16
기능별 SQL
•블로그 테이블 생성(TBL_BLOG)
CREATE TABLE `TBL_BLOG` (

`SEQ` INT(11) NOT NULL,

`BLOG_TITLE` VARCHAR(512) NOT NULL,

`SEQ_USER` INT(11) NOT NULL,

`URL` VARCHAR(512) NOT NULL,

`BLOG_DETAIL` VARCHAR(2048) NULL DEFAULT NULL,

`CREATE_DATE` DATETIME NOT NULL DEFAULT getdate(),

`HIT_VISITOR` INT(11) NULL,

PRIMARY KEY (`SEQ`),

INDEX `tbl_user_tbl_blog_fk` (`SEQ_USER` ASC),

CONSTRAINT `tbl_user_tbl_blog_fk`

FOREIGN KEY (`SEQ_USER`)

REFERENCES `mydb`.`TBL_USER` (`SEQ`)

ON DELETE CASCADE

ON UPDATE CASCADE)
17
기능별 SQL
•포스팅 테이블 생성(TBL_POSTS)
CREATE TABLE `TBL_POSTS` (

`SEQ` int(11) NOT NULL,

`SEQ_BLOG` int(11) NOT NULL,

`POST_TYPE` int(11) DEFAULT NULL COMMENT '1 : 글 2 : 그림 3 : 오디오 4 : 비디오 5 : 인용구',

`CREATE_DATE` datetime NOT NULL,

`MODIFY_DATE` date DEFAULT NULL,

`WRITER_IP` varchar(128) DEFAULT NULL,

`CUSTOM_URL` varchar(256) DEFAULT NULL,

`OPT1` int(11) DEFAULT NULL COMMENT '1 : 허용 0 : 불가',

`REFERENCE_URL` varchar(256) DEFAULT NULL,

`HIT_VIEWER` int(11) NOT NULL,

`HIT_LIKE` int(11) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_blog_tbl_posts_fk` (`SEQ_BLOG`),

CONSTRAINT `tbl_blog_tbl_posts_fk` FOREIGN KEY (`SEQ_BLOG`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE 

ASCADE)
18
기능별 SQL
•테마 테이블 생성(TBL_THEME)
CREATE TABLE `TBL_THEME` (

`SEQ` int(11) NOT NULL,

`SEQ_USER` int(11) NOT NULL,

`TITLE` varchar(2048) NOT NULL,

`SUMMARY` varchar(2048) NOT NULL,

`DETAIL` varchar(2048) NOT NULL,

`SOURCE_CODE` varchar(4086) NOT NULL,

`THUMBNAIL_URL` varchar(512) NOT NULL,

`OPT_FREE_OR_PAID` tinyint(1) DEFAULT NULL COMMENT '0 : 무료 1 : 유료',

`PRICE` int(11) NOT NULL DEFAULT '0',

`SEQ_CATEGORY` int(11) NOT NULL,

`HIT_VIEW` int(11) NOT NULL DEFAULT '0',

`HIT_SELL` int(11) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_user_tbl_theme_fk` (`SEQ_USER`),

KEY `fk_TBL_THEME_TBL_CATEGORIES1_idx` (`SEQ_CATEGORY`),

CONSTRAINT `tbl_user_tbl_theme_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_TBL_THEME_TBL_CATEGORIES1` FOREIGN KEY (`SEQ_CATEGORY`) REFERENCES `TBL_CATEGORIES` (`SEQ`) ON DELETE NO ACTION
ON UPDATE NO ACTION)
19
기능별 SQL
•블로그 옵션 테이블 생성(TBL_BLOG_OPTION)
CREATE TABLE `TBL_BLOG_OPTION` (

`SEQ` int(11) NOT NULL,

`OPT_PRE_VIEW` tinyint(1) NOT NULL DEFAULT '0',

`NO_POST_BY_PAGE` int(11) NOT NULL DEFAULT '20',

`OPT_SHARE_TUMBLR` tinyint(1) NOT NULL,

`OPT_IS_USE_MOBILE_LAYOUT` tinyint(1) NOT NULL DEFAULT '0',

`OPT_NEW_LINK` tinyint(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_blog_tbl_blog_option_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)
20
기능별 SQL
•블로그 옵션 테이블 생성(TBL_BLOG_OPTION)
CREATE TABLE `TBL_BLOG_SOCIAL` (

`SEQ` int(11) NOT NULL,

`GITHUB` varchar(256),

`BEHANCE` varchar(256),

`FOURSQUARE` varchar(256),

`LAST_FM` varchar(256),

`GOOGLE_ANALYTICS_ID` varchar(256),

`TWITTER` varchar(256),

`FACEBOOK` varchar(256),

`DRIBBLE` varchar(256),

`FLICKR` varchar(256),

`SKYPE` varchar(256),

`DEVIANART` varchar(256),

`VIMEO` varchar(256),

`DISQUS` varchar(256),

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_blog_tbl_blog_social_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)

21
기능별 SQL
•블로그 뷰 옵션 테이블 생성(TBL_VIEW_OPTION)
CREATE TABLE `TBL_BLOG_VIEW_OPT` (

`SEQ` int(11) NOT NULL,

`OPT_SMALLER_NAV_FOR_PAGES` tinyint(1) NOT NULL DEFAULT '0',

`OPT_RED_BACKGROUND` tinyint(1) NOT NULL DEFAULT '0',

`OPT_BLUE_BACKGROUND` tinyint(1) NOT NULL DEFAULT '0',

`OPT_HIDE_COLORED_TOP_BAR` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_DATE` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_BACKGROUND_TEXTURE` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_TABS` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_NOTES` tinyint(1) NOT NULL DEFAULT '0',

`ALIGN_NAVIGATION_WITH_DESCRIPTION` tinyint(1) NOT NULL DEFAULT '0',

`INFINITE_SCROLL` tinyint(1) NOT NULL DEFAULT '0',

`HIDE_SOCIAL_BUTTON` tinyint(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_blog_tbl_blog_view_opt_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)

22
기능별 SQL
•카테고리 테이블 생성(TBL_CATEGORIES)
CREATE TABLE `TBL_CATEGORIES` (

`SEQ` int(11) NOT NULL,

`NAME` varchar(256) NOT NULL,

PRIMARY KEY (`SEQ`)

)
23
기능별 SQL
•친구목록 테이블 생성(TBL_FRIENDS)
CREATE TABLE `TBL_FRIENDS` (

`SEQ` int(11) NOT NULL,

`SEQ_FRIEND` int(11) NOT NULL,

`SEQ_USER` int(11) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_user_tbl_friends_fk` (`SEQ_USER`),

KEY `tbl_user_tbl_friends_fk1` (`SEQ_FRIEND`),

CONSTRAINT `tbl_user_tbl_friends_fk1` FOREIGN KEY (`SEQ_FRIEND`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `tbl_user_tbl_friends_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
24
기능별 SQL
•포스팅 테이블 생성(TBL_POSTS)
CREATE TABLE `TBL_POSTS` (

`SEQ` int(11) NOT NULL, `SEQ_BLOG` int(11) NOT NULL,

`POST_TYPE` int(11) DEFAULT NULL COMMENT '1 : 글 2 : 그림 3 : 오디오 4 : 비디오 5 : 인용구’,

`CREATE_DATE` datetime NOT NULL,

`MODIFY_DATE` date DEFAULT NULL,

`WRITER_IP` varchar(128) DEFAULT NULL,

`CUSTOM_URL` varchar(256) DEFAULT NULL,

`OPT1` int(11) DEFAULT NULL COMMENT '1 : 허용 0 : 불가’,

`REFERENCE_URL` varchar(256) DEFAULT NULL,

`HIT_VIEWER` int(11) NOT NULL,

`HIT_LIKE` int(11) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_blog_tbl_posts_fk` (`SEQ_BLOG`),

CONSTRAINT `tbl_blog_tbl_posts_fk` FOREIGN KEY (`SEQ_BLOG`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
25
기능별 SQL
•태그 테이블 생성(TBL_TAGS)
CREATE TABLE `TBL_TAGS` (

`SEQ` int(11) NOT NULL,

`SEQ_POST` int(11) NOT NULL,

`TAG_NAME` varchar(256) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_posts_tbl_tags_fk` (`SEQ_POST`),

CONSTRAINT `tbl_posts_tbl_tags_fk` FOREIGN KEY (`SEQ_POST`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
26
기능별 SQL
•포스팅 – 글 테이블 생성(TBL_POST_WRITINGS)
CREATE TABLE `TBL_POST_WRITINGS` (

`SEQ_POST` int(11) NOT NULL,

`TITLE` varchar(512) NOT NULL,

`CONTENT` varchar(2048) NOT NULL,

PRIMARY KEY (`SEQ_POST`),

CONSTRAINT `tbl_posts_tbl_writings_fk` FOREIGN KEY (`SEQ_POST`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
27
기능별 SQL
•포스팅 – 이미지 목록 테이블 생성(TBL_POST_IMAGE_LIST)
CREATE TABLE `TBL_POST_IMAGE_LIST` (

`SEQ` int(11) NOT NULL,

`SEQ_IMAGE` int(11) NOT NULL,

`IMG_URL` varchar(45) NOT NULL,

PRIMARY KEY (`SEQ`),

KEY `tbl_post_image_tbl_post_image_list_fk` (`SEQ_IMAGE`),

CONSTRAINT `tbl_post_image_tbl_post_image_list_fk` FOREIGN KEY (`SEQ_IMAGE`) REFERENCES `TBL_POST_IMAGE` (`SEQ_POST`) ON DELETE CASCADE
ON UPDATE CASCADE

)!
28
기능별 SQL
•포스팅 – 인용구 테이블 생성(TBL_POST_QUOTE)
CREATE TABLE `TBL_POST_QUOTE` (

`SEQ` int(11) NOT NULL,

`QUOTE` varchar(2048) NOT NULL,

`REFERENCE` varchar(2048) NOT NULL,

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_posts_tbl_quote_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
29
기능별 SQL
•포스팅 – 링크 테이블 생성(TBL_POST_LINK)
CREATE TABLE `TBL_POST_LINK` (

`SEQ` int(11) NOT NULL,

`URL` varchar(512) NOT NULL,

`TITLE` varchar(512) NOT NULL,

`DETAIL` varchar(2048) NOT NULL,

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_posts_tbl_post_link_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
30
기능별 SQL
•포스팅 – 채팅 테이블 생성(TBL_POST_CHAT)
CREATE TABLE `TBL_POST_CHAT` (

`SEQ` int(11) NOT NULL,

`TITLE` varchar(256) NOT NULL,

`QUESTION` varchar(2048) NOT NULL,

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_posts_tbl_post_chat_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
31
기능별 SQL
•포스팅 – 오디오 테이블 생성 (TBL_POST_AUDIO)
CREATE TABLE `TBL_POST_AUDIO` (

`SEQ` int(11) NOT NULL,

`URL` varchar(1024) NOT NULL,

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_posts_tbl_post_audio_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
32
기능별 SQL
•포스팅 - 비디오 테이블 생성 (TBL_POST_VIDEO)
CREATE TABLE `TBL_POST_VIDEO` (

`SEQ` int(11) NOT NULL,

`URL` varchar(1024) NOT NULL,

`CONTENT` varchar(2048) NOT NULL,

PRIMARY KEY (`SEQ`),

CONSTRAINT `tbl_posts_tbl_post_video_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE

)!
33
기능별 SQL
•테마 테이블 생성 (TBL_THEME)
CREATE TABLE `TBL_THEME` (!
`SEQ` int(11) NOT NULL,!
`SEQ_USER` int(11) NOT NULL,!
`TITLE` varchar(2048) NOT NULL,!
`SUMMARY` varchar(2048) NOT NULL,!
`DETAIL` varchar(2048) NOT NULL,!
`SOURCE_CODE` varchar(4086) NOT NULL,!
`THUMBNAIL_URL` varchar(512) NOT NULL,!
`OPT_FREE_OR_PAID` tinyint(1) DEFAULT NULL COMMENT '0 : 무료 1 : 유료',!
`PRICE` int(11) NOT NULL DEFAULT '0',!
`SEQ_CATEGORY` int(11) NOT NULL,!
`HIT_VIEW` int(11) NOT NULL DEFAULT '0',!
`HIT_SELL` int(11) NOT NULL,!
PRIMARY KEY (`SEQ`),!
KEY `tbl_user_tbl_theme_fk` (`SEQ_USER`),!
KEY `fk_TBL_THEME_TBL_CATEGORIES1_idx` (`SEQ_CATEGORY`),!
CONSTRAINT `tbl_user_tbl_theme_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,!
CONSTRAINT `fk_TBL_THEME_TBL_CATEGORIES1` FOREIGN KEY (`SEQ_CATEGORY`) REFERENCES `TBL_CATEGORIES` (`SEQ`) ON DELETE NO ACTION
ON UPDATE NO ACTION!
)
34
기능별 SQL
•테마 스크린샷 테이블 생성 (TBL_THEME_SCREENSHOT)
CREATE TABLE `TBL_THEME_SCREENSHOT` (!
`SEQ` int(11) NOT NULL,!
`SEQ_THEME` int(11) NOT NULL,!
`SCREENSHOT_URL` varchar(512) NOT NULL,!
PRIMARY KEY (`SEQ`),!
KEY `tbl_theme_tbl_theme_screenshot_fk` (`SEQ_THEME`),!
CONSTRAINT `tbl_theme_tbl_theme_screenshot_fk` FOREIGN KEY (`SEQ_THEME`) REFERENCES `TBL_THEME` (`SEQ`) ON DELETE CASCADE ON UPDATE
CASCADE!
)
35
기능별 SQL
•새 사용자 추가
INSERT INTO `tbl_user` (`SEQ`, `USER_ID`, `PASSWORD`, `EMAIL`, `USER_NAME`,
`JOIN_DATE`, `USER_PROFILE_URL`, `STATUS`, `DROP_DATE`, `MODIFY_DATE`,
`LANGUAGE`, `IS_EDIT_TOOL`, `TBL_LIKE_LIST_SEQ`)!
VALUES!
! (4, 'lee', '1231', 'lee@naver.com', '이정훈', now(), 'www.haha.com/het.png', 1, NULL,
NULL, 'KOR', '2', 0);!
36
기능별 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가 회원정지 상태
기능별 SQL
•친구 추가
INSERT INTO `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
•블로그 만들기(기본옵션)
INSERT INTO `tbl_blog` (`SEQ`, `BLOG_TITLE`, `SEQ_USER`, `URL`,
`BLOG_DETAIL`, `CREATE_DATE`, `HIT_VISITOR`)!
VALUES!
! (3, '강's blog', 3, 'kang.soo', '깡수의 블로그', '2013-12-02 00:00:00', 12423424);!
39
기능별 SQL
•새 포스트 등록(글)
INSERT INTO `tbl_posts` (`SEQ`, `SEQ_BLOG`, `POST_TYPE`, `CREATE_DATE`,
`MODIFY_DATE`, `WRITER_IP`, `CUSTOM_URL`, `OPT1`, `REFERENCE_URL`,
`HIT_VIEWER`, `HIT_LIKE`)!
VALUES!
! (0, 0, 0, '2013-03-02 00:00:00', NULL, '211.238.145.12', NULL, NULL, NULL, 1234, 123);!
!
INSERT INTO `tbl_post_writings` (`SEQ_POST`, `TITLE`, `CONTENT`)!
VALUES!
! (0, '오늘 일기', '오늘 나는 뭐하고 놀까 싶었다.<br /> 그러다 보니 어느덧 시간은 다되고...<br/> 허허허
허...');!
40
기능별 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
기능별 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
기능별 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
기능별 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
기능별 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
기능별 SQL
•사용자별 방문자 순위
select!
! A.user_name,!
! B.BLOG_TITLE,!
! B.HIT_VISITOR!
from!
! tbl_user A,!
! tbl_blog B!
where!
! A.SEQ = B.SEQ_USER!
order by B.`HIT_VISITOR` desc
46
기능별 SQL
•방문자가 1000명 이상인 사용자의 블로그
select!
! A.user_name,!
! B.BLOG_TITLE,!
! B.HIT_VISITOR!
from!
! tbl_user A,!
! tbl_blog B!
where!
! A.SEQ = B.SEQ_USER!
! and B.HIT_VISITOR > 1000
47
기능별 SQL
•카테고리가 ‘벤처 기업’ 인 테마 목록
select!
! *!
from!
! tbl_theme A,!
! tbl_user B,!
! tbl_categories C!
where!
! A.SEQ_CATEGORY = C.SEQ!
! and A.SEQ_USER = B.SEQ!
! and C.name = '벤처 기업'
48
49
UI 설계
메뉴 구조도 50
Tumblr'
회
원
가
입'
Dashboard
(로그인후)'
Posts'
글작성'
My'
Timeline'
Follower'
친구목록'
친구추
가/삭제'
활동'
블로그 꾸
미기'
테마선택' 테마옵션'
새
블로
그
만들
기'
설정'
계정설정'
테마'
카테
고리
별
보기'
인기
테마'
테마
등록'
화면 설계
•회원 가입
51
회원가입
이메일 주소
비밀번호
다른 사람이 나를 검색할 수 있도록 허용
비밀번호 확인
포스팅 편집도구 리치 텍스트 편집기 일반 텍스트/HTML 마크다운
언어 한국어
회원 가입 취소
화면 설계
•Dashboard
52
Tumblr Dashboard
|
테마
|
설정
포스팅
등록 글 사진 인용구 링크 오디오 비디오
타임라인
Posts
Followers
활동
블로그
꾸미기
새블로그
장익환(matthew@me.com)
님이
2014-05-08
등록한
사진
!
오늘은
기분이

Db설계 프로젝트 1조 _중간제출

  • 1.
    Micro Blog Database 중앙대학교컴퓨터공학부 데이터베이스 시스템 1조
 Tumblr(텀블러) 사이트에 대한 데이터베이스 응용설계 - 중간제출 장익환(20060957) 이상태(20115695) 조동경(20112104) 이소라(20111316) 박소연(20101524)
  • 2.
    2 INDEX • 응용 분야 •참조 사이트 • 응용의 기능 • ERD & Scheme • 기능별 SQL • UI설계
  • 3.
  • 4.
    3응용 분야 • 우리팀은웹 서비스 중 “블로그”를 응용 분야의 한 주제로 선정하였다. • 네이버 블로그, 티스토리, 이글루스 등 수 많은 블로그 플랫폼 중에 이러한 방대한 기능을 배제하고, 기 본적인 블로그의 기능인 “포스팅” 기능을 세분화하여 여기에 추가적으로 소셜 네트워크 기능(SNS)을 제공하는 응용 분야를 생각하였다. • 본 응용분야는 기본적인 사용자 처리(회원가입,로그인 등)의 기능과 블로깅(글, 그림, 오디오, 비디오) 기능, 그리고 추가적으로 SNS기능의 일부인 친구관리 및 타임라인, 채팅등의 기능을 처리한다. • 추가적으로 사용자들이 자신의 블로그를 꾸밀 수 있는 기능과 스킨을 사고팔 수 있는 마켓플레이스를 처리한다.
  • 5.
  • 6.
    참조 사이트 텀블러(tumblr)는 사용자들이문자, 그림, 영상, 링크, 인용, 소리를 그들의 조그마한 텀블로그에 게재할 수 있게 도와 주는 마이크 로블로그 플랫폼이자 웹사이트이다. ! 사용자들은 다른 사용자를 팔로우(follow) 할 수 있고, 또한 블로그를 꾸밀 수 있다. 사 용자는 또한 자신이 직접 스킨을 제작하고 판 매할 수 있는 마켓 플레이스를 갖추고 있다. www.tumblr.com 6
  • 7.
  • 8.
    응용의 기능 •텀블러 응용기능 텀블러 DB 포스팅 팔로잉 친구 관리 타임 라인 글 쓰기, 수정, 삭제 글/사진/비디오/오디오 … 스킨 스킨 구매 스킨 제작 블로그 회원관리 계정 8
  • 9.
  • 10.
  • 11.
    ERD 테이블 11 •사용자 TableAttributes TBL_USER 사용자SEQ(PK,AI), 사용자ID, 비밀번호, 이메일, 가입일자,사 용 자프로필사진URL,상태(0:탈퇴 1:가입 2:일시정지), 탈퇴일자, 정 보수정일자, 사용언어, 사용 포스팅 툴 TBL_FRIENDS 친구목록SEQ(PK,AI), 친구 SEQ(FK), 사용자 SEQ(FK) TBL_BUY_LIST 구매목록SEQ(PK,AI), 구매한사용자SEQ(FK), 구매한 테마 SEQ(FK), 구매일자, 구매방법 TBL_LIKE_LIST 좋아요목록 SEQ(PK,AI), 좋아요 일자, 좋아요한 포스트 SEQ(FK), 좋아요한 사용자 SEQ(FK)
  • 12.
    ERD 테이블 12 •블로그 TableAttributes TBL_BLOG 블로그SEQ(PK,AI), 블로그 제목, 만든이 ID(FK), URL, 블로그 설명, 작성일자, 방문자 TBL_BLOG_OPTION 블로그 옵션 SEQ(PK,AI), 미리보기옵션, 페이지당 포스트갯수, 텀블러 공유 옵션, 모바일 레이아웃 옵션, 새창으로 옵션 TBL_BLOG_VIEW_OPTION 블로그 보기 옵션 SEQ(PK,AI), 작은 레이아웃 옵션, 빨간배경 옵션, 파란배경 옵션, 칼라 상단바 옵션, 날짜숨기기 옵션, 배경숨기기 옵션, 탭 숨기기 옵션, 노트 숨기기 옵션, 동적크기 옵션, 무한스크롤 옵션, 소셜링크버튼 없애기 옵션 TBL_BLOG_SOCIAL 블로그 소셜 SEQ(PK,AI), Github URL, 비핸스 URL, 포스퀘어 URL, 라스트FM URL, 구글분석도구 URL, 트위터 URL, 페이스북 URL, 드리블 URL, 플리커 URL, 스카이프 URL, 데비안아트 URL, 비메오 URL, 디스쿼스 URL
  • 13.
    ERD 테이블 13 •포스트 TableAttributes TBL_POSTS 포스팅SEQ(PK,AI), 블로그 SEQ(FK), 포스트 타입(0 : 글 1 : 사진 2 : 인용구 3 : 링크 4 : 채팅 5 : 오디오 6 : 동영상), 작성일, 수정일, 작성자IP, 사용자임의URL, 옵션1, 출처URL, 조회수, 라이크한 수 TBL_TAGS 태그SEQ(PK,AI), 포스트SEQ(fk), 태그이름 TBL_POST_WRITIN GS 포스팅 SEQ(PK,FK), 제목, 내용 TBL_POST_IMAGE 포스팅 SEQ(PK,FK), 내용 TBL_POST_IMAGE _LIST 포스팅 SEQ(PK,FK), 내용, URL TBL_POST_AUDIO 포스팅 SEQ(PK,FK), URL TBL_POST_VIDEO 포스팅 SEQ(PK,FK), URL, 내용 TBL_POST_CHAT 포스팅 SEQ(PK,FK), 제목, 질문내용 TBL_POST_LINK 포스팅 SEQ(PK,FK), URL, 제목, 내용 TBL_POST_QUOTE 포스팅 SEQ(PK,FK), 격언내용, 출처
  • 14.
    ERD 테이블 14 •테마 TableAttributes TBL_THEME 테마SEQ(PK,AI), 제작자 유저 SEQ(FK), 제목, 요약, 내용, 소스코드, 섬네일URL, 유/무료 옵션, 가격, 카테고리 SEQ(FK), 뷰카운트, 판매숫자 TBL_THEME_SCREENSHOT 스크린샷 SEQ(PK,AI), 테마SEQ(FK), 스크린샷 URL TBL_CATEGORIES 카테고리 SEQ(PK,AI), 카테고리명
  • 15.
  • 16.
    기능별 SQL •사용자 테이블생성(TBL_USER) CREATE TABLE `TBL_USER` (
 `SEQ` INT(11) NOT NULL,
 `USER_ID` VARCHAR(20) NOT NULL,
 `PASSWORD` VARCHAR(20) NOT NULL,
 `EMAIL` VARCHAR(100) NOT NULL,
 `USER_STATUS_SEQ` INT(11) NOT NULL,
 `USER_NAME` VARCHAR(20) NOT NULL,
 `JOIN_DATE` DATETIME NOT NULL,
 `USER_PROFILE_URL` VARCHAR(256) NULL DEFAULT NULL,
 `STATUS` INT(11) NULL DEFAULT NULL COMMENT '0 : 탈퇴 1 : 가입',
 `DROP_DATE` DATE NULL DEFAULT NULL,
 `MODIFY_DATE` DATE NULL DEFAULT NULL,
 `LANGUAGE` VARCHAR(512) NOT NULL,
 `IS_EDIT_TOOL` VARCHAR(512) NOT NULL,
 PRIMARY KEY (`SEQ`))
 16
  • 17.
    기능별 SQL •블로그 테이블생성(TBL_BLOG) CREATE TABLE `TBL_BLOG` (
 `SEQ` INT(11) NOT NULL,
 `BLOG_TITLE` VARCHAR(512) NOT NULL,
 `SEQ_USER` INT(11) NOT NULL,
 `URL` VARCHAR(512) NOT NULL,
 `BLOG_DETAIL` VARCHAR(2048) NULL DEFAULT NULL,
 `CREATE_DATE` DATETIME NOT NULL DEFAULT getdate(),
 `HIT_VISITOR` INT(11) NULL,
 PRIMARY KEY (`SEQ`),
 INDEX `tbl_user_tbl_blog_fk` (`SEQ_USER` ASC),
 CONSTRAINT `tbl_user_tbl_blog_fk`
 FOREIGN KEY (`SEQ_USER`)
 REFERENCES `mydb`.`TBL_USER` (`SEQ`)
 ON DELETE CASCADE
 ON UPDATE CASCADE) 17
  • 18.
    기능별 SQL •포스팅 테이블생성(TBL_POSTS) CREATE TABLE `TBL_POSTS` (
 `SEQ` int(11) NOT NULL,
 `SEQ_BLOG` int(11) NOT NULL,
 `POST_TYPE` int(11) DEFAULT NULL COMMENT '1 : 글 2 : 그림 3 : 오디오 4 : 비디오 5 : 인용구',
 `CREATE_DATE` datetime NOT NULL,
 `MODIFY_DATE` date DEFAULT NULL,
 `WRITER_IP` varchar(128) DEFAULT NULL,
 `CUSTOM_URL` varchar(256) DEFAULT NULL,
 `OPT1` int(11) DEFAULT NULL COMMENT '1 : 허용 0 : 불가',
 `REFERENCE_URL` varchar(256) DEFAULT NULL,
 `HIT_VIEWER` int(11) NOT NULL,
 `HIT_LIKE` int(11) NOT NULL,
 PRIMARY KEY (`SEQ`),
 KEY `tbl_blog_tbl_posts_fk` (`SEQ_BLOG`),
 CONSTRAINT `tbl_blog_tbl_posts_fk` FOREIGN KEY (`SEQ_BLOG`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE 
 ASCADE) 18
  • 19.
    기능별 SQL •테마 테이블생성(TBL_THEME) CREATE TABLE `TBL_THEME` (
 `SEQ` int(11) NOT NULL,
 `SEQ_USER` int(11) NOT NULL,
 `TITLE` varchar(2048) NOT NULL,
 `SUMMARY` varchar(2048) NOT NULL,
 `DETAIL` varchar(2048) NOT NULL,
 `SOURCE_CODE` varchar(4086) NOT NULL,
 `THUMBNAIL_URL` varchar(512) NOT NULL,
 `OPT_FREE_OR_PAID` tinyint(1) DEFAULT NULL COMMENT '0 : 무료 1 : 유료',
 `PRICE` int(11) NOT NULL DEFAULT '0',
 `SEQ_CATEGORY` int(11) NOT NULL,
 `HIT_VIEW` int(11) NOT NULL DEFAULT '0',
 `HIT_SELL` int(11) NOT NULL,
 PRIMARY KEY (`SEQ`),
 KEY `tbl_user_tbl_theme_fk` (`SEQ_USER`),
 KEY `fk_TBL_THEME_TBL_CATEGORIES1_idx` (`SEQ_CATEGORY`),
 CONSTRAINT `tbl_user_tbl_theme_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_TBL_THEME_TBL_CATEGORIES1` FOREIGN KEY (`SEQ_CATEGORY`) REFERENCES `TBL_CATEGORIES` (`SEQ`) ON DELETE NO ACTION ON UPDATE NO ACTION) 19
  • 20.
    기능별 SQL •블로그 옵션테이블 생성(TBL_BLOG_OPTION) CREATE TABLE `TBL_BLOG_OPTION` (
 `SEQ` int(11) NOT NULL,
 `OPT_PRE_VIEW` tinyint(1) NOT NULL DEFAULT '0',
 `NO_POST_BY_PAGE` int(11) NOT NULL DEFAULT '20',
 `OPT_SHARE_TUMBLR` tinyint(1) NOT NULL,
 `OPT_IS_USE_MOBILE_LAYOUT` tinyint(1) NOT NULL DEFAULT '0',
 `OPT_NEW_LINK` tinyint(1) NOT NULL DEFAULT '0',
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_blog_tbl_blog_option_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE) 20
  • 21.
    기능별 SQL •블로그 옵션테이블 생성(TBL_BLOG_OPTION) CREATE TABLE `TBL_BLOG_SOCIAL` (
 `SEQ` int(11) NOT NULL,
 `GITHUB` varchar(256),
 `BEHANCE` varchar(256),
 `FOURSQUARE` varchar(256),
 `LAST_FM` varchar(256),
 `GOOGLE_ANALYTICS_ID` varchar(256),
 `TWITTER` varchar(256),
 `FACEBOOK` varchar(256),
 `DRIBBLE` varchar(256),
 `FLICKR` varchar(256),
 `SKYPE` varchar(256),
 `DEVIANART` varchar(256),
 `VIMEO` varchar(256),
 `DISQUS` varchar(256),
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_blog_tbl_blog_social_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )
 21
  • 22.
    기능별 SQL •블로그 뷰옵션 테이블 생성(TBL_VIEW_OPTION) CREATE TABLE `TBL_BLOG_VIEW_OPT` (
 `SEQ` int(11) NOT NULL,
 `OPT_SMALLER_NAV_FOR_PAGES` tinyint(1) NOT NULL DEFAULT '0',
 `OPT_RED_BACKGROUND` tinyint(1) NOT NULL DEFAULT '0',
 `OPT_BLUE_BACKGROUND` tinyint(1) NOT NULL DEFAULT '0',
 `OPT_HIDE_COLORED_TOP_BAR` tinyint(1) NOT NULL DEFAULT '0',
 `HIDE_DATE` tinyint(1) NOT NULL DEFAULT '0',
 `HIDE_BACKGROUND_TEXTURE` tinyint(1) NOT NULL DEFAULT '0',
 `HIDE_TABS` tinyint(1) NOT NULL DEFAULT '0',
 `HIDE_NOTES` tinyint(1) NOT NULL DEFAULT '0',
 `ALIGN_NAVIGATION_WITH_DESCRIPTION` tinyint(1) NOT NULL DEFAULT '0',
 `INFINITE_SCROLL` tinyint(1) NOT NULL DEFAULT '0',
 `HIDE_SOCIAL_BUTTON` tinyint(1) NOT NULL DEFAULT '0',
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_blog_tbl_blog_view_opt_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE)
 22
  • 23.
    기능별 SQL •카테고리 테이블생성(TBL_CATEGORIES) CREATE TABLE `TBL_CATEGORIES` (
 `SEQ` int(11) NOT NULL,
 `NAME` varchar(256) NOT NULL,
 PRIMARY KEY (`SEQ`)
 ) 23
  • 24.
    기능별 SQL •친구목록 테이블생성(TBL_FRIENDS) CREATE TABLE `TBL_FRIENDS` (
 `SEQ` int(11) NOT NULL,
 `SEQ_FRIEND` int(11) NOT NULL,
 `SEQ_USER` int(11) NOT NULL,
 PRIMARY KEY (`SEQ`),
 KEY `tbl_user_tbl_friends_fk` (`SEQ_USER`),
 KEY `tbl_user_tbl_friends_fk1` (`SEQ_FRIEND`),
 CONSTRAINT `tbl_user_tbl_friends_fk1` FOREIGN KEY (`SEQ_FRIEND`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `tbl_user_tbl_friends_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 24
  • 25.
    기능별 SQL •포스팅 테이블생성(TBL_POSTS) CREATE TABLE `TBL_POSTS` (
 `SEQ` int(11) NOT NULL, `SEQ_BLOG` int(11) NOT NULL,
 `POST_TYPE` int(11) DEFAULT NULL COMMENT '1 : 글 2 : 그림 3 : 오디오 4 : 비디오 5 : 인용구’,
 `CREATE_DATE` datetime NOT NULL,
 `MODIFY_DATE` date DEFAULT NULL,
 `WRITER_IP` varchar(128) DEFAULT NULL,
 `CUSTOM_URL` varchar(256) DEFAULT NULL,
 `OPT1` int(11) DEFAULT NULL COMMENT '1 : 허용 0 : 불가’,
 `REFERENCE_URL` varchar(256) DEFAULT NULL,
 `HIT_VIEWER` int(11) NOT NULL,
 `HIT_LIKE` int(11) NOT NULL,
 PRIMARY KEY (`SEQ`),
 KEY `tbl_blog_tbl_posts_fk` (`SEQ_BLOG`),
 CONSTRAINT `tbl_blog_tbl_posts_fk` FOREIGN KEY (`SEQ_BLOG`) REFERENCES `TBL_BLOG` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 25
  • 26.
    기능별 SQL •태그 테이블생성(TBL_TAGS) CREATE TABLE `TBL_TAGS` (
 `SEQ` int(11) NOT NULL,
 `SEQ_POST` int(11) NOT NULL,
 `TAG_NAME` varchar(256) NOT NULL,
 PRIMARY KEY (`SEQ`),
 KEY `tbl_posts_tbl_tags_fk` (`SEQ_POST`),
 CONSTRAINT `tbl_posts_tbl_tags_fk` FOREIGN KEY (`SEQ_POST`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 26
  • 27.
    기능별 SQL •포스팅 –글 테이블 생성(TBL_POST_WRITINGS) CREATE TABLE `TBL_POST_WRITINGS` (
 `SEQ_POST` int(11) NOT NULL,
 `TITLE` varchar(512) NOT NULL,
 `CONTENT` varchar(2048) NOT NULL,
 PRIMARY KEY (`SEQ_POST`),
 CONSTRAINT `tbl_posts_tbl_writings_fk` FOREIGN KEY (`SEQ_POST`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 27
  • 28.
    기능별 SQL •포스팅 –이미지 목록 테이블 생성(TBL_POST_IMAGE_LIST) CREATE TABLE `TBL_POST_IMAGE_LIST` (
 `SEQ` int(11) NOT NULL,
 `SEQ_IMAGE` int(11) NOT NULL,
 `IMG_URL` varchar(45) NOT NULL,
 PRIMARY KEY (`SEQ`),
 KEY `tbl_post_image_tbl_post_image_list_fk` (`SEQ_IMAGE`),
 CONSTRAINT `tbl_post_image_tbl_post_image_list_fk` FOREIGN KEY (`SEQ_IMAGE`) REFERENCES `TBL_POST_IMAGE` (`SEQ_POST`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 28
  • 29.
    기능별 SQL •포스팅 –인용구 테이블 생성(TBL_POST_QUOTE) CREATE TABLE `TBL_POST_QUOTE` (
 `SEQ` int(11) NOT NULL,
 `QUOTE` varchar(2048) NOT NULL,
 `REFERENCE` varchar(2048) NOT NULL,
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_posts_tbl_quote_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 29
  • 30.
    기능별 SQL •포스팅 –링크 테이블 생성(TBL_POST_LINK) CREATE TABLE `TBL_POST_LINK` (
 `SEQ` int(11) NOT NULL,
 `URL` varchar(512) NOT NULL,
 `TITLE` varchar(512) NOT NULL,
 `DETAIL` varchar(2048) NOT NULL,
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_posts_tbl_post_link_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 30
  • 31.
    기능별 SQL •포스팅 –채팅 테이블 생성(TBL_POST_CHAT) CREATE TABLE `TBL_POST_CHAT` (
 `SEQ` int(11) NOT NULL,
 `TITLE` varchar(256) NOT NULL,
 `QUESTION` varchar(2048) NOT NULL,
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_posts_tbl_post_chat_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 31
  • 32.
    기능별 SQL •포스팅 –오디오 테이블 생성 (TBL_POST_AUDIO) CREATE TABLE `TBL_POST_AUDIO` (
 `SEQ` int(11) NOT NULL,
 `URL` varchar(1024) NOT NULL,
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_posts_tbl_post_audio_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 32
  • 33.
    기능별 SQL •포스팅 -비디오 테이블 생성 (TBL_POST_VIDEO) CREATE TABLE `TBL_POST_VIDEO` (
 `SEQ` int(11) NOT NULL,
 `URL` varchar(1024) NOT NULL,
 `CONTENT` varchar(2048) NOT NULL,
 PRIMARY KEY (`SEQ`),
 CONSTRAINT `tbl_posts_tbl_post_video_fk` FOREIGN KEY (`SEQ`) REFERENCES `TBL_POSTS` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE
 )! 33
  • 34.
    기능별 SQL •테마 테이블생성 (TBL_THEME) CREATE TABLE `TBL_THEME` (! `SEQ` int(11) NOT NULL,! `SEQ_USER` int(11) NOT NULL,! `TITLE` varchar(2048) NOT NULL,! `SUMMARY` varchar(2048) NOT NULL,! `DETAIL` varchar(2048) NOT NULL,! `SOURCE_CODE` varchar(4086) NOT NULL,! `THUMBNAIL_URL` varchar(512) NOT NULL,! `OPT_FREE_OR_PAID` tinyint(1) DEFAULT NULL COMMENT '0 : 무료 1 : 유료',! `PRICE` int(11) NOT NULL DEFAULT '0',! `SEQ_CATEGORY` int(11) NOT NULL,! `HIT_VIEW` int(11) NOT NULL DEFAULT '0',! `HIT_SELL` int(11) NOT NULL,! PRIMARY KEY (`SEQ`),! KEY `tbl_user_tbl_theme_fk` (`SEQ_USER`),! KEY `fk_TBL_THEME_TBL_CATEGORIES1_idx` (`SEQ_CATEGORY`),! CONSTRAINT `tbl_user_tbl_theme_fk` FOREIGN KEY (`SEQ_USER`) REFERENCES `TBL_USER` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,! CONSTRAINT `fk_TBL_THEME_TBL_CATEGORIES1` FOREIGN KEY (`SEQ_CATEGORY`) REFERENCES `TBL_CATEGORIES` (`SEQ`) ON DELETE NO ACTION ON UPDATE NO ACTION! ) 34
  • 35.
    기능별 SQL •테마 스크린샷테이블 생성 (TBL_THEME_SCREENSHOT) CREATE TABLE `TBL_THEME_SCREENSHOT` (! `SEQ` int(11) NOT NULL,! `SEQ_THEME` int(11) NOT NULL,! `SCREENSHOT_URL` varchar(512) NOT NULL,! PRIMARY KEY (`SEQ`),! KEY `tbl_theme_tbl_theme_screenshot_fk` (`SEQ_THEME`),! CONSTRAINT `tbl_theme_tbl_theme_screenshot_fk` FOREIGN KEY (`SEQ_THEME`) REFERENCES `TBL_THEME` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE! ) 35
  • 36.
    기능별 SQL •새 사용자추가 INSERT INTO `tbl_user` (`SEQ`, `USER_ID`, `PASSWORD`, `EMAIL`, `USER_NAME`, `JOIN_DATE`, `USER_PROFILE_URL`, `STATUS`, `DROP_DATE`, `MODIFY_DATE`, `LANGUAGE`, `IS_EDIT_TOOL`, `TBL_LIKE_LIST_SEQ`)! VALUES! ! (4, 'lee', '1231', 'lee@naver.com', '이정훈', now(), 'www.haha.com/het.png', 1, NULL, NULL, 'KOR', '2', 0);! 36
  • 37.
    기능별 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 * 위의 경우는 이름이 장익환인 회원에게 이름이 강수현, 황정윤 인 친구를 추가하는 질의
  • 39.
    기능별 SQL •블로그 만들기(기본옵션) INSERTINTO `tbl_blog` (`SEQ`, `BLOG_TITLE`, `SEQ_USER`, `URL`, `BLOG_DETAIL`, `CREATE_DATE`, `HIT_VISITOR`)! VALUES! ! (3, '강's blog', 3, 'kang.soo', '깡수의 블로그', '2013-12-02 00:00:00', 12423424);! 39
  • 40.
    기능별 SQL •새 포스트등록(글) INSERT INTO `tbl_posts` (`SEQ`, `SEQ_BLOG`, `POST_TYPE`, `CREATE_DATE`, `MODIFY_DATE`, `WRITER_IP`, `CUSTOM_URL`, `OPT1`, `REFERENCE_URL`, `HIT_VIEWER`, `HIT_LIKE`)! VALUES! ! (0, 0, 0, '2013-03-02 00:00:00', NULL, '211.238.145.12', NULL, NULL, NULL, 1234, 123);! ! INSERT INTO `tbl_post_writings` (`SEQ_POST`, `TITLE`, `CONTENT`)! VALUES! ! (0, '오늘 일기', '오늘 나는 뭐하고 놀까 싶었다.<br /> 그러다 보니 어느덧 시간은 다되고...<br/> 허허허 허...');! 40
  • 41.
    기능별 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
  • 46.
    기능별 SQL •사용자별 방문자순위 select! ! A.user_name,! ! B.BLOG_TITLE,! ! B.HIT_VISITOR! from! ! tbl_user A,! ! tbl_blog B! where! ! A.SEQ = B.SEQ_USER! order by B.`HIT_VISITOR` desc 46
  • 47.
    기능별 SQL •방문자가 1000명이상인 사용자의 블로그 select! ! A.user_name,! ! B.BLOG_TITLE,! ! B.HIT_VISITOR! from! ! tbl_user A,! ! tbl_blog B! where! ! A.SEQ = B.SEQ_USER! ! and B.HIT_VISITOR > 1000 47
  • 48.
    기능별 SQL •카테고리가 ‘벤처기업’ 인 테마 목록 select! ! *! from! ! tbl_theme A,! ! tbl_user B,! ! tbl_categories C! where! ! A.SEQ_CATEGORY = C.SEQ! ! and A.SEQ_USER = B.SEQ! ! and C.name = '벤처 기업' 48
  • 49.
  • 50.
    메뉴 구조도 50 Tumblr' 회 원 가 입' Dashboard (로그인후)' Posts' 글작성' My' Timeline' Follower' 친구목록' 친구추 가/삭제' 활동' 블로그꾸 미기' 테마선택' 테마옵션' 새 블로 그 만들 기' 설정' 계정설정' 테마' 카테 고리 별 보기' 인기 테마' 테마 등록'
  • 51.
    화면 설계 •회원 가입 51 회원가입 이메일주소 비밀번호 다른 사람이 나를 검색할 수 있도록 허용 비밀번호 확인 포스팅 편집도구 리치 텍스트 편집기 일반 텍스트/HTML 마크다운 언어 한국어 회원 가입 취소
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
    등록 글 사진인용구 링크 오디오 비디오 타임라인
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.