DB 설계 - boostcamp-2020/Project12-B-Slack-Web GitHub Wiki
요구사항 분석
System
- System은 한 개의 워크스페이스를 가진다.
User
- User는 아이디, 비밀번호, 프로필 사진, 풀네임, 디스플레이네임, 자기소개, 핸드폰 번호, 소셜 아이디 여부를 가진다.
- User는 다수의 chatRoom에 속할 수 있다.
- User는 속한 chatRoom의 보여지는 섹션을 정할 수 있다.
- User는 chatRoom의 알림 여부를 정할 수 있다.
- User는 다른 User과의 DM을 주고 받을 수 있다.
chatRoom
- 채팅방은 속해있는 제목, 공개 여부, 채팅타입, 토픽 한 정보를 가진다.
- 채팅방은 여러 회원을 가질 수 있다.
- 공개여부 정보는 다른사람에게 보여지는 public과 보여지지 않은 private을 가진다.
- 채팅타입 정보는 channel, DM, Thread으로 나뉜다.
- 채팅방은 여러 개의 message를 가진다.
- 채팅방은 pin한 내용에 대한 정보를 가진다.
message
- message은 여러 reaction을 가질 수 있다.
- message은 작성 시간, 작성자, 내용 정보를 가진다.
- message는 여러 파일을 가질 수 있다.
- message은 한 개의 thread를 가진다.
thread
- thread는 여러 개의 reply을 가진다.
reply
- reply는 여러 reaction을 가질 수 있다.
- reply는 내용, 작성자 정보, 작성시간을 가진다
- reply는 여러 파일을 가질 수 있다.
reaction
file
후보 개체 선정
- User
- ChatRoom
- Message
- Thread
- Reply
- Reaction
- File
후보 관계 선정
관계 |
타입 |
속성 |
user-chatRoom |
n:m |
섹션, 알림여부 |
chatRoom-message |
1:n |
핀여부 |
message-file |
1:n |
|
message-reaction |
1:n |
|
message-thread |
1:1 |
|
thread-reply |
1:n |
|
reply-reaction |
1:n |
|
reply-file |
1:n |
|
검토
- 1:1 관계를 가지고 있는 message-thread 관계에서 thread에 대해 많은 속성을 가지지 않기에 릴레이션을 생성하지 않고 추후 message와 reply의 1:n 관계를 생성해 속성명을 thread로 관리하는 것이 좋다고 판단
최종 개체 선정
- User
- ChatRoom
- Message
- Reply
- Reaction
- File
- Section
최종 관계 선정
관계 |
타입 |
속성 |
user-Section |
1:n |
|
user-chatRoom |
n:m |
섹션, 알림여부 |
chatRoom-message |
1:n |
핀여부 |
message-file |
1:n |
|
message-reaction |
1:n |
|
message-reply |
1:n |
|
reply-reaction |
1:n |
|
reply-file |
1:n |
|
ERD