# 구조 설계

## 개요

SOOJLE 데이터베이스를 구축하기 위한 구조 설계에 대해 다루는 문서이다.&#x20;

## DB 요구사항

데이터베이스 설계에 있어 반드시 다음과 같은 사항은 준수 및 지향하도록 한다.

* NoSQL의 특징을 적극적으로 수용할 것
* 타 테이블 간의 JOIN 연산을 지양할 것
* JOIN 연산이 불가피할 경우, 필요한 정보를 해당 테이블로 Embedding 시킬 것
* 불가피하게 높은 시간 복잡도의 연산을 수행해야 할 경우, 해당 작업을 백그라운드에서 수행할 것
* 불가피한 상황이 아니라면 aggregation 연산을 지양할 것
* 각 API에 대한 단일 결과 도출 시간이 3초가 넘지 않도록 설계할 것

## E-R Diagram

요구사항을 바탕으로 설계한 SOOJLE의 데이터베이스 구조는 다음과 같다.&#x20;

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-Lv-njkZMC6JbUMJCYhk%2F-Lv-rX9Nb2wiYZ76Hx_Q%2F%5BDB%20%E1%84%80%E1%85%AE%E1%84%8C%E1%85%A9%5D%20%E1%84%80%E1%85%AE%E1%84%8C%E1%85%A9-2.png?alt=media\&token=217dfb1c-06be-4604-a127-2b12e63b5688)

####
