데이터베이스 ERD 설계 : 스타벅스 과제

Joey Lee·2020년 5월 14일
13

Database

목록 보기
2/6
post-thumbnail

스타벅스 홈페이지 메뉴에서 음료, 푸드, 상품, 카드 총 4개 카테고리가 있습니다. 이 중 음료 카테고리를 지금 홈페이지에 있는 것처럼 띄우려면 어떻게 데이터베이스를 설계해야 하는지에 대한 과제를 받았습니다. 과제 진행한 과정을 아래와 같이 정리합니다.

1. 요구사항 분석하기

이번 과제에서는 로그인, 음료 주문/구매 등과 같은 동적인 화면이 아니라 단순히 메뉴 구성에 따라 상품 정보를 보여주기만 하면 되는 것으로 요구사항은 심플 했습니다.

[요구사항 내용]

  • 메뉴 카테고리는 상품 카테고리를 가진다.
  • 상품 카테고리는 상품(음료)를 가진다.
  • 테마 상품은 일부 상품을 가진다.
  • 상품(음료)는 이름, 섬네일, 설명문구, 보유 성분 등을 가진다.
  • 상품(음료)는 알레르기 물질을 가질 수 있다. 등등

작성한 요구사항을 바탕으로 데이터베이스를 구성하는데 필요한 개체, 속성, 개체간의 관계를 추출하여 ERD를 생성합니다.

2. 개체(Entity)와 속성(Attribute) 추출하기

개체는 현실에서의 사물이나 사람에 해당하는 실체입니다. 개체를 나타내는 속성이 있고 이들 속성들이 모여 하나의 정보 단위를 이루는 것이 개체입니다. 요구사항에서는 개체는 대부분 명사로 이루어져 있지만, 속성과 잘 구별하는 것이 중요한 포인트 입니다.

위의 요구사항에 기반해서 아래와 같이 개체와 속성을 추출해 보았습니다.

3. 개체(Entity)간의 관계 추출하기

개체와 속성이 구별되었다면 개체 간의 관계를 추출합니다. 개체 간의 관계도 여러 가지로 분류해 볼 수 있습니다.

일대일(1:1), 일대다(1:N), 다대다(N:N)
관계 : 선택적인 관계, 필수적인 관계

요구사항에서 개체 간의 관계는 동사로 묘사되기 때문에 동사부터 찾으면 됩니다. 단, 관계가 필수인지 선택적인지 모호할 수 있는데 A:B의 관계에서 개체 조건을 만족하는 개체가 반드시 존재해야 되는지 혹은 일부 개체가 존재할 수도 있고 혹은 존재할 수 없는 것인지 고려해서 판단할 필요가 있습니다.

아래는 개체간의 관계의 추출한 결과 입니다.

4. ERD 작성

여기까지 진행했다면 이제 각 개체의 속성들의 데이터 타입이 어떻게 될지 판단하고, ERD를 작성하면 됩니다.

1:N일 때 ForeingKey를 설정하고, N:N일 때는 중간 테이블을 통해 ForeignKey를 설정하여 테이블별로 관계 설정을 할 수 있습니다. 이에 대해서는 설명을 생략하지만, 아래의 ERD 화면을 보면 이해에 도움이 되리라 생각합니다.

참고로, ERD를 작성한 툴은 AQUERY TOOL 입니다.

[일대일, 일대다, 다대다 테이블 연결하는 방법]

이렇게 하여 제가 만든 최종 결과물은 아래와 같습니다. 정답이 아니라 잘못된 부분이 있을 수 있습니다. 제가 이해한 범위 내에서 만들어낸 결과란 점 참고 부탁 드립니다.

profile
안녕하세요!

0개의 댓글