1) 설계 배경
설계하고자 하는 프로젝트는 ‘채팅방 위키’이다. 이 프로젝트의 결과물은 채팅 내용을 위키 형식으로 정리하여 정보들을 쉽게 습득할 수 있도록 한다. 일상대화 위주의 채팅방은 굳이 그럴 필요가 없을 수 있지만, 많은 사람들이 들어가 있는 단체 채팅방이나, 회의, 오픈채팅방의 경우에는 수없이 많은 대화가 다양한 주제로 이루어진다. 그 중에서 나에게 필요한 내용은 있을 수도, 없을 수도 있다. 그러나 만약 필요한 정보가 없었을 경우, 메세지를 확인하느라 낭비한 시간이 피로감이 쌓이고 신경이 분산되어 삶의 능률이 떨어질 수 있다. 그렇기 때문에 꼭 필요한 정보만 확인하고, 그렇지 않은 대화 내용은 추후 볼 수 있도록 정리한 위키 형식의 ‘채팅방 위키’ 프로젝트가 필요하다. 이 프로젝트의 결과물을 통해 사용자들은 채팅 내용을 습득하는데 걸리는 시간을 절약하고, 중요한 정보를 보다 쉽게 얻을 수 있다.
2) ER 다이어그램
ER 다이어그램에서 나타낸 엔티티와 관계, 애트리뷰트들을 바탕으로 크게 Users, ChatRoom, Authorization, Chatwiki로 나누어 데이터베이스 모습을 설명해볼 수 있다.
- Users
Users는 사용자에 대한 정보가 저장된다. UserID, JoinDate, Name, JoinDay, JoinedChats와 같은 요소를 포함한다. UserID는 사용자 고유의 ID, JoinDate는 가입일, Name은 이름, JoinDay는 가입일로부터 현재까지의 날, JoinedChats는 참여중인 채팅방 내역을 보여준다.
- ChatRoom
ChatRoom은 채팅방의 정보와 관련된 사항들이 저장된다. ChatID, CreatedDate, Name, ParticipantsCount, ChatCount, HostID와 같은 요소를 포함한다. ChatID는 채팅방 고유의 ID, CreateDate는 채팅방이 개설된 날짜, Name은 채팅방의 이름, ParticipantsCount는 채팅방에 참여중인 사람들의 수, ChatCount는 현재 채팅방에서의 총 채팅 수, HostID는 채팅방 방장의 ID를 나타낸다.
- Authorization
Authorization은 채팅방에 참여중인 사람들의 권한을 나타낸다. 각각 HostID, Co-HostID, ParticipantID을 포함한다. HostID는 방장의 ID를, Co-HostID는 부방장의 ID를, ParticipantID는 일반 참여자의 ID를 나타낸다.
- ChatWiki
ChatWiki는 실제 채팅내용이 위키 형식으로 저장되기 위해 필요한 요소들이다. ChatWiki는 ChatID, ChatIdx, RawChat, SumChat, Tags, Urls, Contributors, TimeStamp(Year, Month, Day, Time)을 포함한다. ChatID는 채팅방 고유의 ID, ChatIdx는 하나의 채팅방 내에서의 채팅의 인덱스, RawChat은 실제 채팅 내용, SumChat은 채팅 내용을 요약한 내용, Tags는 각 채팅 내용과 관련된 Tag들, Urls는 채팅 내용에 포함된 Url들, Contributor는 각 ChatIdx에 해당하는 채팅에 참여한 사람들의 이름, TimeStamp는 해당 채팅 내용이 언제 생성되었는지를 나타낸다.
3) 논리적 DB 구조
4) 프로젝트 소개