youngseo's TECH blog

배달의 민족 간단한 DB 설계 본문

BackEnd

배달의 민족 간단한 DB 설계

jeonyoungseo 2022. 10. 28. 21:58

학교 DB 수업 시간에 교수님께서 학교 시스템 DB 설계할 때 드는 돈이 100억이라고 말씀하셔서 매우 놀랐다.
학생과 수업 간 DB를 잠깐만 생각해봐도, 고려해야 할 사항도 많고 실수 없이 깔끔하게 짜야 하는 부분들이 많다.

암튼, 이번에 4, 5주차 UMC 과제가 ERD 설계 / Query문 / QuickDBD 이용 / MySQL 로 DB 설계 이라서, 배달의 민족 DB를 한번 설계해 보기로 했다.

1. DB 설계자 입장에 섰을 때 거쳐야 하는 과정

1. database에 저장되어야 할 정보가 무엇인지 생각한다.
2. 그렇게 해서 어떤 프로젝트가 돌아가게 하는지 고려한다.
3. 개념을 설계한다. --정형적이지 않은 요구사항을 정형화한다. (ex. 제약조건이 무엇인가? 20학번 학생이 들어야 하는 필수 과목은?)
4. E-R 다이어그램을 설계한다.
5. 최종 결과물로 Relational Schema를 작성한다. -Select문, Create문 등으로 DB를 설계한다.

일단 배달의 민족을 만드는 사람의 입장에 서서, 어떤 정보들을 반영해야 하는지 생각해보자. 배달의 민족이 생기기 전에 우리는 전화로 이런 로직을 통해 배달을 주문했을 것이다. 이곳에서 참조.

전화로 배달을 주문하는 과정의 DB 예시

2. 이를 통해 간단히 배달의 민족 DB를 구상해보았다. (연습용)

Store, Review, Order이 큰 맥락이고 그 안에 더 세세한 조건들이 있다.


TROUBLE SHOOTING 과정에 대해 적어보려 한다.
1. 각 변수명을 헷갈리지 않게 설정하는 것. Review를 달 때 회원이 다는 Review도 있고, 사장이 다는 Review도 존재한다. 각 명칭을 어떻게 구별할 것인지를 잘 설정해야 했다.
2. 관계 종류에 따라 1:1/1:M/N:M 을 잘 설정한다. 이 때 아래와 같은 기호를 사용할 수 있는데, 위 내용에는 포함시키지 못했다. 방법을 잘 모르겠다...무료버전이라 표시가 안되는 것 같기도 하고, 구글링 해서 딱히 정보가 나오지 않는다. 

3. AWS RDS 와 DataGrip을 통해 SQL문 활용해보기

너무나 간단한 sql문이다.. 이렇게 table들을 여러개 만들고 DummyData를 만든 후 sql문으로 데이터를 확인해보았다.

AWS로 MYSQL 사용해보기에 대한 링크