Session - 관계형 데이터베이스 실습

Sung Jun Jin·2020년 4월 9일
0

위코드 세션 정리

목록 보기
6/12

관계형 데이터베이스(RDBMS) 사전 과제를 공부하고 세션 진행 후 조별로 스타벅스 음료 파트 ERD 구성도를 제작해 제출하는 과제를 받았다

각 테이블의 column 설계

menus table

  • name (메뉴 이름 : ex)음료, 푸드, 상품)

categories table

  • name (카테고리 이름 : ex)콜드 브루, 브루드, 에스프레소, 프라푸치노 등)

drinks table

  • name (음료 이름)
  • en_name (영문 이름)
  • image (이미지 URI 주소)
  • description_top (상단 음료 설명)
  • descripton_bottom (하단 음료 설명)
  • my_drink (나만의 음료 등록 여부)

nutritions table

  • kcal (칼로리)
  • natrium (나트륨)
  • sat_fat (포화지방)
  • sugar (당류)
  • protein (단백질)
  • caffeine (카페인)

sizes table

  • name (사이즈명)
  • ml (ml)
  • oz (온스)

options table

  • espresso (에스프레소 샷 추가 여부)
  • decaffeine (디카페인 여부)

allergies table

  • name (알레르기 이름)

drinks_allergies table

  • drinks 테이블과 allergies 테이블의 many-to-many 관계로 인해 생성한 중간 테이블
  • drinks_id (음료 ID)
  • allergies_id (알레르기 ID)

각 테이블의 Relation Mapping

menus one-to-many categories
categories one-to-many drinks
drinks many-to-many allergies
drinks one-to-one options
drinks one-to-one nutritions
nutritions one-to-one sizes

Feedback

  • 각 테이블의 이름은 테이블명_name이라고 하기 보다 name이라고 해주는게 좋다
  • id에 사용되는 데이터 타입은 주로 INT형이지만 많은 id를 생성해야 하는 경우 BIGINT를 사용할수 있다.
  • 스타벅스의 음료 이미지는 2종류(큰 이미지와 작은 이미지)이다. 각각 따로 분류해 저장하는것이 좋다
  • 데이터 컬럼을 아끼려고 공수가 들어가는 작업을 하는거보단 데이터 설계단계에서 직접 분류해 직접 저장하는 방법이 더 단순할수 있다. ex) 사이즈 테이블에 ml 컬럼만 정의하고 ml 단위를 oz(온스) 단위로 계산하는 로직을 구현해 oz 단위를 계산하는것 보다는 ml, oz 컬럼을 처음부터 둘 다 설계하는게 더 좋은 방법이다.
  • 영양성분의 단위는 FLOAT, INT 둘다 있으므로 DECIMAL(M,N)로 저장해 ROUND함수를 통해 소수점 제거를 하는 편이 좋다
  • description_1, description_2 -> top_description, bottom_description
  • drink 테이블에 image, description 컬럼을 넣어주기 보다는 따로 image, description 테이블을 만들어 관리하는게 나중에 데이터를 읽고 쓰는데 유리하다.
  • 각 음료마다 줄 수 있는 옵션 (에스프레소 디카페인 샷추가)를 잘못 이해해서 각각 에스프레소 샷 추가 옵션, 디카페인 옵션으로 착각했다. 알고보니 디카페인 에스프레소 샷추가 옵션이였다(...) 이 옵션은 음료 카테고리별로 추가 가능여부가 갈리므로 espresso_shot이라는 테이블을 따로 만들어 categories 테이블과 one-to-one 관계로 연결해 관리하는걸 추천해주셨다.
profile
주니어 개발쟈🤦‍♂️

0개의 댓글