TIL 10 | 데이터 베이스 모델링 리뷰

SammyJung·2021년 3월 25일
0
post-thumbnail

스터디 팀원들과 스타벅스를 하나의 예시로 데이터 베이스 모델을 만들어보고 리뷰하는 시간을 가졌다.

사례를 살펴보며 관계형 데이터 베이스에 대해 알아보자.

1) 일대일 관계 (one to one)

일대일 관계에서 한 테이블에 있는 하나의 레코드가 다른 테이블에 있는 단 하나의 레코드가 연관되어 있습니다. 예를 들어, 하나의 책을 한명이 쓴 경우
저자에 대한 정보 테이블 1개와 책의 정보 테이블 1개는 일대일 관계를 가지고 있다.

2) 일대다 관계 (one to many)

일대다 관계의 사례로 생각하기 좋은 예시가 공동저자이다. 여러명의 공동저자가 하나의 책을 썼을 때 하나의 책과 여러명의 저자의 정보가 연결되어 여러개의 상태값을 가질 수 있는 관계이다.

음료의 예시로는
한 가지의 카테고리가 여러 제품들을 가지고 있습니다.

티 tea - 캐모마일티,얼그레이티,아이스티,녹차 등등

3) 다대다 관계(many to many)

쉽게 생각하자면 테이블 두 개의 관계를 참조하는 또 하나의 테이블이 있는 상황이다. 왜 관계를 나타내는 테이블이 따로 필요한 것 인지 헷갈릴수 있는데 데이터 중복을 방지하고 결국은 데이터를 쉽게 관리하기 위해서이다.

위와 같이 음료와 알러지의 관계를 살펴보자. 하나의 음료는 여러가지 알러지를 유발할 수 있고, 하나의 알러지는 여러개의 음료에서 나타난다.

그래서 음료 테이블과 알러지 테이블을 분리하고, 두 데이터의 관계를 보여주는 테이블을 하나 더 만들었다.

리뷰 내용

처음에 beverage_allergy 테이블에서 primarykey를 주지 않았었는데 리뷰를 하면서 primarykey가 없으면 데이터를 식별할 수 가 없기 때문에 식별할 수 있는 고유한 값이 필요하다.
그래서 기본키로 id 값을 추가했다.

데이터 타입 변경

신상품 여부에 대한 정보를 추가 한다면
DB에서 boolean 값이 없기때문에 0과1만 사용하여 레코드를 기록해서 관리해야하는데, INT형 보다는 작은 TINYINT형을 쓰는 것이 좋다.

TINYINT

  • 자료형의 크기 : 1바이트(1Byte, 2^8 = 8bit)
  • 범위 : -128 에서 127 (UNSIGNED 일 경우 0 에서 255)

참고) 소숫점 자리까지 필요한 데이터 타입 DECIMAL(M, D)

  • M은 소수 부분을 포함한 실수의 총 자릿수를 나타내며, 최댓값은 65입니다.
  • D는 소수 부분의 자릿수를 나타내며, D가 0이면 소수부분을 가지지 않는 것입니다.

신상품 인정기간에 대한 타입 - 시간이 중요하다면 DATETIME으로 하면 좋고 시간까지는 불필요하다면 DATE만 사용해도 된다.

profile
안녕하세요! 프론트엔드 개발자 새미입니다:D

0개의 댓글