---
# System prepended metadata

title: 데이터 베이스 설계

---

# 데이터 베이스 설계

### 요구사항 분석

### System
- System은 한 개의 워크스페이스를 가진다.

### User
- User는 아이디, 비밀번호, 프로필 사진, 풀네임, 디스플레이네임, 자기소개, 핸드폰 번호, 소셜 아이디 여부를 가진다.
- User는 다수의 chatRoom에 속할 수 있다.
- User는 속한 chatRoom의 보여지는 섹션을 정할 수 있다.
- User는 chatRoom의 알림 여부를 정할 수 있다.
- User는 다른 User과의 DM을 주고 받을 수 있다.

### Section
- Section은 여러 개의 채팅방을 가질 수 있다.

### chatRoom
- 채팅방은 속해있는 제목, 공개 여부, 채팅타입, 토픽 한 정보를 가진다.
- 채팅방은 여러 회원을 가질 수 있다.
- 공개여부 정보는 다른사람에게 보여지는 public과 보여지지 않은 private을 가진다.
- 채팅타입 정보는 channel, DM, Thread으로 나뉜다.
- 채팅방은 여러 개의 message를 가진다.
- 채팅방은 pin한 내용에 대한 정보를 가진다.

### message
- message은 여러 reaction을 가질 수 있다.
- message은 작성 시간, 작성자, 내용 정보를 가진다.
- message는 여러 파일을 가질 수 있다.
- message은 한 개의 thread를 가진다.

### thread
- thread는 여러 개의 reply을 가진다.

### reply
- reply는 여러 reaction을 가질 수 있다.
- reply는 내용, 작성자 정보, 작성시간을 가진다
- reply는 여러 파일을 가질 수 있다.

### reaction
- reaction은 제목과 이미지를 가진다.

### file
- file은 URI 정보를 가진다.

### 후보 개체 선정
- 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 | 가지다 | |

### 최종 개체 선정
- User
- ChatRoom
- Message
- Reply
- Reaction
- File

### 후보 관계 선정
| 관계 | 타입 | 명세 | 속성 |
| :------: | :-----: | :----: | :----: |
| 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 | 가지다 | |