Micro Blog Database중앙대학교 컴퓨터공학부 데이터베이스 설계 5조Tumblr(텀블러) 사이트에 대한 데이터베이스 분석 - 중간제출장익환(20060957) 유혜성(20091509) 강수현(20110483) 황정윤(20114509)
2INDEX
• 응용 분야
• 참조 사이트
• 응용의 기능
• 질의 리스트
3응용 분야• 우리팀은 웹 서비스 중 “블로그”를 응용 분야의 한 주제로 선정하였다.
• 네이버 블로그, 티스토리, 이글루스 등 수 많은 블로그 플랫폼 중에 이러한 방대한 기능을
배제하고, 기본적인 블로그의 기능인 “포스팅” 기능을 세분화하여 여기에 추가적으로 소셜
네트워크 기능(SNS)을 제공하는 응용 분야를 생각하였다.
• 따라서, 본 응용분야는 기본적인 사용자 처리(회원가입,로그인 등)의 기능과 블로깅(글, 그
림, 오디오, 비디오) 기능, 그리고 추가적으로 SNS기능의 일부인 친구관리 및 타임라인 기
능을 처리하게 된다.
참조 사이트
텀블러(tumblr)는 사용자들이 문자, 그림,
영상, 링크, 인용, 소리를 그들의 조그마한
텀블로그에 게재할 수 있게 도와 주는 마이
크로블로그 플랫폼이자 웹사이트이다.
! 사용자들은 다른 사용자를 팔로우(follow)
할 수 있고, 또 이들의 텀블로그를 개인의
것으로 만들 수 있다. 이 서비스는 이용성을
강조하고 있다.
www.tumblr.com
5자•텀블러 응용 기능
텀블러 DB
회원 관리(Users)
포스팅 기능(Posts) SNS 기능(connections)
친구 관리
타임 라인
글 쓰기, 수정, 삭제
글/사진/비디오/오디오 …
5질의 리스트•사용자 테이블 생성
CREATE TABLE 회원 ( 아이디 VARCHAR(20) NOT NULL, 비밀번호 VARCHAR(20) NOT NULL, 이메일 VARCHAR(100) NOT NULL, 이름 VARCHAR(20) NOT NULL, 가입일자 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 사용자사진URL VARCHAR(100) NOT NULL, 사용자상태 INT(1) NOT NULL DEFAULT 1, PRIMARY KEY(‘아이디’) UNIQUE KEY ‘회원’ (‘아이디’,’이메일’));
✴위의 테이블은 예시이며, 최종 결과물 제출시 변경될 수 있음.
5질의 리스트•사용자 추가
INSERT INTO 회원(아이디,비밀번호,이메일,이름) VALUES(‘izie’,password(‘1231’), ‘[email protected]’,’장익환’);
✴ password() 함수는 MySQL의 비밀번호 해싱 함수.
5질의 리스트•사용자 수정
UPDATE 회원 SET 비밀번호=password(‘4321’) WHERE 이메일=‘[email protected]’
✴ password() 함수는 MySQL의 비밀번호 해싱 함수. ✴ 텀블러의 경우 email 이 primary_key 이며, 사용자는 본 이메일 주소를 통해 비밀번호를 수정할 수 있으므로 이를 통해 사용자 구분을 하게 됨.
5록•사용자 탈퇴
UPDATE 회원 SET 상태=0 WHERE 이메일=‘[email protected]’
✴웹서비스의 경우, 재가입을 대비해서 유저 데이터를 완전히 삭제하지 않는다. 따라서, 사용자의 상태를 나타내는 status 를 0으로 업데이트 함으로써 사용자 탈퇴를 처리할 수 있다.
5질의 리스트•사용자 삭제
DELETE 회원 WHERE 이메일=‘[email protected]’
✴사용자 삭제의 경우 관리자의 실수나 데이터의 꼬임 등에 의한 에러용으로, DBA만 처리 가능하다.
5질의 리스트•포스팅 테이블 생성
CREATE TABLE 포스팅 ( 포스팅번호 INT(11) NOT NULL, 사용자ID VARCHAR(20) NOT NULL, 제목 VARCHAR(100) NOT NULL, 내용 TEXT NOT NULL, 포스팅타입 INT(11) NOT NULL, // 1:텍스트 2:이미지 3:오디오 4:동영상 등록일자 DATE NOT NULL, 수정일자 DATE, 조회수 INT(11) NOT NULL DEFAULT 1, 사용자IP VARCHAR(20), PRIMARY KEY(‘포스팅번호’) KEY ‘포스팅’ (‘포스팅번호’,’사용자ID’)
✴위 테이블은 예시이며, 최종 제출시 변경될 수 있음.
5질의 리스트•포스팅 등록
INSERT INTO 포스팅(사용자ID,제목,내용,포스팅타입,등록일자,사용자IP) VALUES(‘izie’,’내가오늘한일’, ‘오늘 나는 과제를 했다.<br/>그리고 또 과제를 했다…<br/>’,1,now(),’1.209.21.1’);
✴ 내용의 경우 블로그 서비스의 특성상 HTML 테그로 들어가게 된다. ✴ now() 는 현재 시간을 불러오는 MySQL의 함수이다.
5록•특정 회원의 가장 조회수가 높은 포스팅
SELECT MAX(조회수) AS MAX_HITFROM 포스팅 WHERE사용자ID=(SELECT 사용자ID FROM 회원 WHERE 이메일=‘[email protected]’)
✴ 텀블러 서비스의 경우 email로 회원을 구분하므로, 이메일을 통해 사용자 ID를 가져오게 된다.
5질의 리스트•특정 회원의 작성일자별 포스팅 등록 횟수
SELECT 작성일자,COUNT(*) AS 등록 횟수FROM 포스팅 WHERE사용자ID=(SELECT 사용자ID FROM 회원 WHERE 이메일=‘[email protected]’)GROUP BY 작성일자
✴ 텀블러 서비스의 경우 email로 회원을 구분하므로, 이메일을 통해 사용자 ID를 가져오게 된다.
5질의 리스트•특정 일자의 각 회원별 포스팅 등록회수
SELECT 사용자ID,COUNT(*) AS 등록횟수FROM 포스팅 WHERE등록일자=‘2013-11-13’GROUP BY 사용자ID
✴ 텀블러 서비스의 경우 email로 회원을 구분하므로, 이메일을 통해 사용자 ID를 가져오게 된다.