[DB] ERD와 normalization, 스타벅스 modeling 피드백

이태권 (Taekwon Lee)·2022년 5월 31일
0

[Database]

목록 보기
2/2

개념 설명

ERD?

ERD는 Entity Relationship Diagram의 약자로, 한 시스템 안에서 사람이나 물건, 컨셉과 같은 'entities'가 서로 다른 것들과 연결되어 있는 것을 설명하는 흐름도의 한 종류이다.

  • 쉽게 말해, 데이터베이스의 구조를 한 눈에 알아볼 수 있도록 그려놓은 다이어그램이다.
  • 엔티티(entity)는 정의가 가능한 사물이나 개념이다.
  • ERD는 모델링의 기초 청사진이다
  • 청사진? → 큰 틀을 의미한다 → 이것이 없으면 사상누각이다
  • ERD는 나 혼자만의 것이 아닌 모두의 것
  • 다양한 convention에 대한 규칙과 rule이 존재한다

Normalization(정규화)?

요약 데이터를 일정한 규칙에 따라 변형하여 이용하기 쉽게 만드는 일 (출처: 두산백과)

  • 쉽게 말해 데이터의 남용과 오용은 막는 것이다
  • 기본 목표는 테이블 간에 중복된 데이타를 허용하지 않는다는 것이다.
    → 매우 어렵다
  • DB 설계는 case by case
  • 마주한 상황에서 가장 최적화된 방법을 찾는 것이 정도

스타벅스 modeling 피드백

저번편의 modeling

저번편에 다뤘던 내가 수정한 팀원의 스타벅스 modeling 그림이다. 세션을 들으며 여러 피드백을 받아 수정할게 꽤 되었다.

수정한 modeling

수정 사항

  1. 단수형/복수형의 통일

    • categorycategories
    • imgimages
    • sugarsugars
  2. 대문자/소문자 통일

    • 일반적으로 class만 대문자로 시작하므로 소문자로 변경해야 한다
    • ingridients의 세부 영양 정보(Single serving facts, Saturated Fats, ...)를 모두 소문자로 변경.
  3. 뜻을 정확히 표현하는 단어 사용

    • ingridientsnutrition_facts
    • contentsdescriptions
  4. 줄임말 쓰지 않기

    • imgimages
  5. 정확한 자료형 쓰기

    • boolean 자료형은 tinyint로 변경
    • 소수점까지 표현하도록 세부 영양 정보의 자료형을 int에서 decimal로 변경

의문점

  1. 신상 음료(new)는 drinks 테이블 안에 넣을까?
  2. 세부 정보(descripions)도 drinks 테이블 안에 넣을까?
  3. id로 연결이 되었을 떄 1, *의 차이는 무엇일까?

의문점에 대한 답변

멘토님한테 질문하여 의문점에 대한 답을 들었다.

  • 1~2번은 현재로는 추천하셨다. 일대일 관계이기 때문에 별도로 테이블을 구별하는 것보다는 효율성 측면에서 drinks 테이블에 넣는 걸로 하자.
  • 1*는 일대다(one to many)의 관계를 뜻하는 것 같다. 즉 1one이고 *many이다.

참고 자료

What is Entity Relationship Diagram (ERD)?

[Database] 정규화(Normalization) 쉽게 이해하기

(tistory, Dev Scroll) [DB] 📚 데이터 모델링 개념 및 📈 ERD 다이어그램 그리는법 (1:N 관계)

(두산백과, 네이버 지식백과) 정규화

(스타벅스 코리아) 메뉴 페이지

profile
(Backend Dev.) One step at a time

0개의 댓글