[공통] 스타벅스 DB모델링_10.24

송철진·2022년 10월 24일
0

Team Assignment

task1: ERD 사용법 익히기(db.diagram 웹 가입)
task2: 스타벅스 음료 페이지를 모델링

  • 필수 구현 사항 : 음료, 카테고리, 영양 정보, 알러지, 음료 이미지, 음료 설명, 신상 여부
  • 구현 제외 사항 : 프로모션, 음료 사이즈

위의 개념을 학습하고 팀 과제를 수행한 결과는 다음과 같다:
https://dbdiagram.io/d/63563f23fa2755667d58fe6e

다시 생각해보기1(수업 전)

참조: https://abangpa1ace.tistory.com/37
위 블로그를 참조하여 주어진 과제의 조건 부분만 적용한 결과:
https://dbdiagram.io/d/635678c1fa2755667d5c4c13

카테고리_대분류명음료 / 푸드 / 상품 / 카드
카테고리_중분류명콜드브루 / 브루드 / 에스프레소 / 프라푸치노 / 블렌디드 / 스타벅스 리프레셔 / 스타벅스 피지오 / 티(티바나) / 기타제조 / 주스(병음료)
알러지성분우유 / "" / 대두,우유 / 우유,난류 / 대두,우유,난류,밀 / 땅콩,대두,우유 / 대두,우유,밀 / 땅콩,대두,우유,난류,밀,오징어 / 복숭아 / 토마토 / 대두
신상이벤트명(한시적 이벤트: (ex)10월 할로윈 테마.)

many-to-many 관계

  • Table음료와 Table알러지 / Table음료와 Table영양정보
  • 서로 연결하기 위한 중간 테이블을 생성하였다

one-to-many 관계

  • Table카테고리_대분류와 Table카테고리_중분류 / Table카테고리_중분류와 Table음료 / Table신상정보와 Table음료
  • Table음료는 모든 키가 복합키가 될까?

다시 생각해보기2(수업 후)

  • 수업 전 고정관념
    • 하나의 통합된 테이블을 만들고
      도부이결다조 순서로 정규화해서 테이블을 분해해야 한다
    • 모든 테이블에 id int가 존재하지는 않는다
  • 수업 후 알게 된 것
    • 통합테이블을 쪼갤 필요없이 각 키의 관계성을 고려해서
      일대일은 같은 테이블에 두거나 다른 테이블에 둘 수도 있고
      일대다는 다른 테이블에 두고
      다대다는 다른 테이블에 두되 각테이블의 id를 따서 중간테이블을 생성
    • 모든 테이블에 테이블용 id를 하나씩 만들고 그것만 pk로 설정해도 된다.
      👉 복합키를 어떻게 설정할지 걱정ㄴㄴ
    • 홈페이지를 참조하지 않아도, 음료, 카테고리, 영양 정보, 알러지, 음료 이미지, 음료 설명, 신상 여부라는 구현사항만 보고 테이블 스키마를 작성할 수 있다!

1. 음료-카테고리: 다대일

  • 음료 테이블, 카테고리 테이블 따로 생성

2. 음료-영양정보: 일대일

  • 일대일이지만 따로 관리하고 싶은 마음이라면 영양정보 테이블을 따로 만든다
    단, 중복되지 않게 하는 조건이 필요

3. 음료-알러지: 다대다

  • 중간테이블을 생성한다

4. 음료-이미지: 이미지별 다르게

  • 음료-썸네일: 일대일
  • 음료-추가 이미지: 일대다(별도 테이블 생성)

5. 신상정보: 기간을 설정

  • 더 복잡한 예; 신상지만 매출이 높을 때 신상이라고 표시하고 싶은 경우

6. 기타

  • drink_id는 백엔드에서 유니크 인덱스를 걸면 된다?(반복x)
  • 성능 최적화에 대한 고민은 나중에...(본 과제는 기초이론이므로)

solution

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글