1차 모델링
7월 12일 TIL : 링크

필수 구현 사항 :
음료,카테고리,영양 정보,알러지,음료 이미지,음료 설명,신상 여부
기존사항
1-1. 1대1 관계인 데이터 전부를 음료테이블에 포함하면 전체적인 데이터를 한 눈에 파악 가능한 장점이 있다. 특히, 자주 조회하는 데이터일 경우는 한 테이블에 모두 포함되도록 하는 것이 좋다.
1-2. 1차 모델링에서 음료이미지를 음료와 1대1 관계의 데이터로 생각하고 음료테이블에 포함시켰지만, 이미지는 추후 확장성을 고려해 별개의 테이블로 생성하는 것이 좋다. (이미지의 개수가 2개이상이 될 경우를 대비)
2-1. 알러지는 음료와 다대다 관계이므로 중간테이블을 작성해서 두 테이블을 연결하는 것이 맞다.
3-1. 각 테이블을 계층화해서 더 상위 테이블이 Pk를 갖고 하위 테이블에 Fk를 포함시켜 (하위테이블 -> 상위테이블)의 방향을 갖게 설정하는 것이 관습이다. 하지만 그 반대의 방향이어도 상관은 없다.
4-1. 영양정보는 음료와 1대1 관계이기 때문에 음료테이블에 영양정보를 모두 포함시켜도 괜찮다. 대신, 사이즈를 고려하면 1대1 관계에서 1대다 관계로 달라지기 때문에 외부테이블에 작성한다.
5-1. 3번에서 봤듯이 pk와 fk의 관계에서 방향이 역전되어도 상관없다.
추가사항
1. 테이블의 이름은 관습적으로 복수형을 사용한다
예) category -> categories
2. 상호관계를 갖는 테이블의 각 column 이름이 일치하게 한다.
3. 신상여부는 데이터의 타입을 null대신 boolean으로 설정한다. null의 경우는, 입력할 데이터가 명확하지않으며 데이터관리가 미흡하거나 데이터를 오기입했을 때, 데이터에 오류가 생길 가능성이 있고 관리가 어렵다. boolean이 더 직관적으로 데이터를 표현할 수 있다.
또한, 신상여부는 음료와 1대1관계이지만 추후에 변동사항이 있는 데이터이기 때문에 테이블을 따로 생성하는 것이 데이터관리에 용이하다.
(예를 들어, 신상출시이벤트가 끝나면 해당 테이블을 통째로 삭제하거나 수정할 수 있다.)
2차 모델링

1. 테이블명을 복수형으로 변경
2. column명 변경 및 누락된 column 추가
: 신상여부 -> is_new, Drinks테이블에korean_name과 English_name 추가
3. images테이블을 새로 생성
4. Nutritions테이블과 Drinks테이블의 방향은 반대가 되어도 상관없음
Drinks테이블의 fk(nutrition_id) -> Nutritions테이블의 pk(id) 혹은
Nutritions테이블의 fk(drink_id) -> Drinks테이블의 pk(id)