3. ‘배달의민족’ 앱 DB 설계 및 쿼리 작성

minn·2023년 3월 17일
0

Rising Camp

목록 보기
3/4

2023/02/09

배달의민족 앱 ERD를 설계하고 AWS RDS 상에서 쿼리를 작성해보자.

✔︎ Checklist

  1. [AWS RDS 구축]
  2. [배달의민족 앱 ERD 설계]
  3. [앱 화면 10개에 대한 쿼리 작성]

[오류 해결기]


1. AWS RDS 구축

  1. AWS RDS 란? (Relational Database Service)

    AWS에서 제공하는 클라우드 관계형 데이터베이스 운영 서비스. 이를 이용하여 서버와 데이터베이스를 독립적으로 관리할 수 있다. 확장성, 보안성, 관리 효율성 등의 측면에서 장점이 있다.

  2. AWS RDS 구축하기

    Ref.

    MySQL DB 인스턴스를 만들고 MySQL DB 인스턴스의 데이터베이스에 연결

    • AWS 페이지에서 MySQL 데이터베이스 생성

- EC2 서버로 접속하여 확인
    $ ssh -i "RisingCamp/minn_keypair.pem" ubuntu@ec2-3-39-178-218.ap-northeast-2.compute.amazonaws.com
    # sudo mysql -h rich.c4t2uq2ojemi.ap-northeast-2.rds.amazonaws.com -P 3306 -u admin -p

  1. 타임존 설정

    Ref.

    • 다음과 같이 파라미터 변경

    time_zone 파라미터 Asia/Seoul 로 수정
    
    character_set 파라미터 utf8mb4 로 수정
    
    collation 파라미터 utf8mb4_general_ci
    
- 내 데이터베이스에 수정한 파라미터 그룹 적용 후 재부팅
    

    

- 접속 IP 설정
    

인바운드 규칙을 추가하여 모든 트래픽에서 내 아이피만 접속하도록 설정

  1. DataGrip 접속


2. 배달의민족 앱 ERD 설계

  1. ERD 란? (Entity Relationship Diagram)
    시스템의 엔티티들이 무엇이 있는지 어떤 관계가 있는지를 나타내는 다이어그램. 데이터베이스 설계 단계에서 모델링 목적으로 쓰인다.

  2. 배달의민족 ERD

  • FK 미적용

Rich_baemin (noFK)

  • FK 적용

Rich_baemin (FK)

  1. ERD Cloud 사용법 참고링크 :

    ERD 설계 기본개념 (with ERD Cloud)

  1. ERD 작성 시 참고사항

    ERD 작성 시 FK 사용하면

    장점 : 정확한 값을 입력받을 수 있음
    단점 : 테스트값 입력시에도 정확한 값을 넣어야해서 번거로움

    그래서 실무에서 erd개발 단계에서는 FK를 적용 안하는 경우도 많음.

3. 앱 화면 10개에 대한 쿼리 작성

  1. DataGrip에 table 생성
    • ERD Cloud > 내보내기 > SQL 다운로드

- DataGrip 콘솔에서 실행
    

  1. 앱 화면 10개에 대한 한 방 쿼리 작성

    [DB]Rich_baemin_query

과제 피드백

  • 배달팁은 구간별로 나눠서 조건걸어서 출력되게
  • id 값은 항상 필수로 출력(메뉴, 옵션 등 다…)
  • 금액 출력 시 세자리마다 콤마(,) 표시랑 원 표기
  • 주소는 주소와 상세주소로 나뉘어짐
  • 해당 주소가 우리집인지 아닌지 뜨는 기능 구현 필요
  • 주소는 위도경도도 포함
  • 별점은 소수점 한자리까지
  • 1번에서 결제방법 빠짐
  • 3번에서 카테고리는 필요없음
  • 4번에서 옵션 그룹도 떠야함
  • 5번쿼리 간소화, distinct 는 서버에 부하를 줄 수 있음(지양), 최대한 GROUP BY로
  • 7번도 distinct 말고 중복제거 해보기, 유저 프로필사진 누락
  • 8번 옵션그룹 이름 출력 필요, 데이터 출력 형식 맞추기
  • status는 메타데이터용, order 상태는 orderStatus 따로 둬서 관리
  • 작성일자 상대적 표기로 하는 방법 고민 (지난주 등…)

궁금한거

  1. 리뷰 개수 등을 가게 테이블에 넣어놨는데 join을 너무많이하게 돼서…
  2. 한 테이블에 외래키로 다른 테이블 PK값 네개씩 넣어도 되나
  3. time_zone 나만 설정 안되나?
profile
Backend Developer

0개의 댓글