멘토링 과제 database ERD 스타벅스(4회차)

2025. 4. 1. 20:54·멘토링

 

🚀 중간 테이블에 대한 설명


1️⃣ DRINK_INGREDIENTS (음료와 재료 간의 관계 중간 테이블)

관계:

  • DRINKS와 INGREDIENTS 테이블 간의 N:M 관계를 중간 테이블인 DRINK_INGREDIENTS를 사용해 연결합니다.

설명:

  • 하나의 음료는 여러 재료를 가질 수 있고, 하나의 재료는 여러 음료에서 사용될 수 있습니다.
  • 예를 들어, "카라멜 마끼아또" 음료에는 "우유", "카라멜 시럽" 등의 재료가 포함될 수 있습니다.
  • 반대로, "우유"는 여러 음료에 사용될 수 있습니다. (예: "카라멜 마끼아또", "카페 라떼" 등)

관계:

  • DRINKS(1) : DRINK_INGREDIENTS(N) : INGREDIENTS(M)
  • DRINK_INGREDIENTS 테이블이 음료와 재료의 관계를 관리하는 역할을 합니다.

DRINK_INGREDIENTS 테이블:

칼럼설명
drink_id (FK) 음료의 ID (음료 테이블의 외래 키)
ingredient_id (FK) 재료의 ID (재료 테이블의 외래 키)
  • 이 테이블은 음료와 재료 사이의 다대다 관계를 처리하며, 두 테이블을 연결하는 역할을 합니다.

2️⃣ ORDER_DETAILS (주문과 음료 간의 관계 중간 테이블)

관계:

  • ORDERS와 DRINKS 테이블 간의 N:M 관계를 중간 테이블인 ORDER_DETAILS로 연결합니다.

설명:

  • 하나의 주문은 여러 음료를 포함할 수 있고, 하나의 음료는 여러 주문에 포함될 수 있습니다.
  • 예를 들어, "고객 A"가 "카라멜 마끼아또"와 "아메리카노"를 주문한 경우, 한 번의 주문에 두 개의 음료가 포함됩니다.
  • 즉, ORDER_DETAILS 테이블은 각 주문에 포함된 음료의 수량과 세부 정보를 저장합니다.

관계:

  • ORDERS(1) : ORDER_DETAILS(N) : DRINKS(M)
  • ORDER_DETAILS 테이블은 주문과 음료의 관계를 관리하는 역할을 합니다.

ORDER_DETAILS 테이블:

칼럼설명
order_detail_id (PK) 주문 상세 고유 ID
order_id (FK) 주문의 ID (주문 테이블의 외래 키)
drink_id (FK) 음료의 ID (음료 테이블의 외래 키)
quantity 음료의 수량
  • 이 테이블은 주문과 음료 사이의 다대다 관계를 처리하며, 각 주문에 포함된 음료의 수량을 저장합니다.

🚀 3️⃣ 전체 테이블 간의 관계 정리

테이블 1관계테이블 2설명
DRINKS 1:N DRINK_INGREDIENTS 하나의 음료는 여러 재료를 가질 수 있다. (하나의 음료에 여러 재료 포함)
INGREDIENTS 1:N DRINK_INGREDIENTS 하나의 재료는 여러 음료에서 사용될 수 있다. (하나의 재료가 여러 음료에 포함될 수 있음)
ORDERS 1:N ORDER_DETAILS 하나의 주문은 여러 음료를 포함할 수 있다. (주문 내 여러 음료 정보 저장)
DRINKS 1:N ORDER_DETAILS 하나의 음료는 여러 주문에 포함될 수 있다. (하나의 음료가 여러 주문에 등장할 수 있음)
CUSTOMERS 1:N ORDERS 하나의 고객은 여러 주문을 할 수 있다. (한 고객이 여러 주문을 할 수 있음)
DRINKS N:M INGREDIENTS 하나의 음료는 여러 재료를 사용하고, 하나의 재료는 여러 음료에 포함될 수 있다. 이를 DRINK_INGREDIENTS라는 중간 테이블로 연결함
ORDERS N:M DRINKS 하나의 주문은 여러 음료를 포함하고, 하나의 음료는 여러 주문에 포함될 수 있다. 이를 ORDER_DETAILS라는 중간 테이블로 연결함

  • ORDERS 테이블에 price를 넣지 않는 이유는, 주문에 여러 음료가 포함되기 때문에 각 음료의 가격과 수량을 별도로 계산해야 하고, 이 계산은 ORDER_DETAILS 테이블에서 이루어지기 때문입니다.
  • 음료 가격은 DRINKS 테이블에 저장되고, 각 음료의 수량은 ORDER_DETAILS 테이블에서 관리되어 최종적으로 주문의 가격이 계산됩니다.
  • 이 구조는 유연성과 확장성을 제공합니다. 주문에 여러 음료를 포함하고 각 음료의 수량을 변경할 수 있기 때문에, 주문 가격을 실시간으로 계산하는 데 유리합니다.

따라서, ORDERS 테이블에 price를 넣지 않고, ORDER_DETAILS에서 음료별 가격과 수량을 관리하는 방식이 데이터베이스 설계에서 보다 효율적이고 관리하기 용이합니다!

 

결론

  • ORDERS 테이블에 quantity를 추가하면 주문당 하나의 음료만 포함되는 구조가 되므로 여러 음료가 포함된 주문을 처리하기 어렵습니다.
  • **중간 테이블 (ORDER_DETAILS)**을 사용하면 하나의 주문에 여러 음료와 그 수량을 유연하게 처리할 수 있기 때문에, N:M 관계를 효율적으로 관리할 수 있습니다.

따라서, **중간 테이블 (ORDER_DETAILS)**을 사용하는 방식이 더 적합하고, 효율적이며 확장성 있는 방식입니다!

 

🧠 핵심 포인트:

  • DRINK_INGREDIENTS와 ORDER_DETAILS는 각각 음료와 재료, 음료와 주문 간의 N:M 관계를 1:N 관계로 분리하여 처리하는 중간 테이블입니다.
  • 이 중간 테이블들은 두 테이블 간의 복잡한 관계를 명확하고 효율적으로 처리할 수 있도록 도와줍니다.

이렇게 중간 테이블을 사용하면, 각 테이블 간의 관계를 유연하게 처리하고, 데이터 무결성을 유지할 수 있습니다!

'멘토링' 카테고리의 다른 글

멘토링 내용 정리 Flask & API (5회차 정리)  (0) 2025.04.25
멘토링 내용 정리 database (4회차 정리)  (0) 2025.04.02
멘토링 내용 정리 database (3회차 정리-추가)  (0) 2025.03.28
멘토링 내용 정리 database (3회차 정리)  (0) 2025.03.27
멘토링 내용 정리 (2회차 정리)  (0) 2025.03.18
'멘토링' 카테고리의 다른 글
  • 멘토링 내용 정리 Flask & API (5회차 정리)
  • 멘토링 내용 정리 database (4회차 정리)
  • 멘토링 내용 정리 database (3회차 정리-추가)
  • 멘토링 내용 정리 database (3회차 정리)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787) N
      • Python (32)
      • 프로젝트 (110) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    gpterror
    youngprofessionals
    global politics
    btsjungkook
    lawsuitculture
    college reunions
    newpoliticalparty
    chatgpterror
    life reflection
    americanlaw
    hotcoffeecase
    classaction
    RM
    homebartrend
    뷔
    urbantrends
    self-growth
    btscomeback
    livebroadcast
    btsreunion
    btsdischarge
    smartphonedurability
    chinanightlife
    basalcellcarcinoma
    bts
    remittance
    trumpmuskclash
    travel ban
    titaniumcase
    americaparty
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
멘토링 과제 database ERD 스타벅스(4회차)
상단으로

티스토리툴바