1. 과제 안내 - 스타벅스
Ex. 커피 종류 가져와봄.
<상품명 - 카테고리>
오늘의 커피- 브루드
자허블 - 블렌디드
망고패션티 블렌디드 - 블렌디드
슈가 시크릿 레시피 - 블렌디드
백엔드 입장: 블렌디드 3번 써야하는게 맘에 안 들어야 함
If 사장님이, 전세계 매장의 모든 ‘블렌디드'를 영어로 바꾸자 하면, 하나하나 다 해야 함
중복이 있는 카테고리를
테이블 따로 빼서 관리
- One to many : -id 붙여야
Id int
Id varch 문자
근데 엑셀 파일로 전달할 수 없으니, db.diagram (erd)
id 데이터 타입
int 정수 (integer)
pk, increment : Primarykey 로 준다 자동으로 늘어난다
연결; ref:
ref: drinks.category_id -categories.id (one to one)
ref: drinks.categordy_id > categories.id (one to many) 화살표 모양으로
스타벅스의 직원들은
주문을 받을 때에 음료 메뉴 데이터들을 어떻게 관리할까?
스타벅스 직원들이 일일이 상품명을 외우는게 아니라, id number를 보고 Database에 있는 것에 들어가서
해당 상품을 찾아 결제 시, 찍는다는것.
오늘 학습한 데이터베이스와 관계형 데이터베이스를 응용해보기로했다.
스타벅스 모델링
스타벅스 사이트에서 참고하여
"음료, 카테고리, 영양 정보, 알러지, 음료 이미지, 음료 설명, 신상 여부" 를 구현해야 한다.
처음 접근한 방법
관계형 데이터는 이해가 되었다.
관계형 데이터 table은 작성 가능한데,
어떻게 연결 지을지, 그리고 ERD diagram을 이용하는 것에서 막혔다.
중복되는 데이터를 id를 이용해서 테이블을 연결하여 숫자로 만들어주는 것.
팀원들은 바로 ERD에 데이터를 넣으려고 했는데, 정리가 되지 않아서
먼저 엑셀에 테이블로 정리한 뒤에 옮기기로 해 보았다.
데이터를 category table로 시작해서, drinks, allergy로 나누기로 했다.
나머지 '음료 설명, 이미지, 영양정보'는 drinks table의 column에 넣기로 했다.
막힌 부분
이제 ERD를 만들려고 하니, 코드로 만들어지는 표가 도저히 이해가 안 됐다.
그 이유는, ERD를 이해를 못했기에.
ERD를 쓰는 이유, 목적, 우리가 무엇을 하고 있는지부터 이해하는 게 먼저였다.
ERD 예시를 구글링으로 검색하다보니 알게 됐다.
참고 링크
https://gitmind.com/kr/erd-examples.html
온라인 무료 ER 다이어그램 예제 및 단계별 자습서
ERD 표기법, ERD 예제 및 ER 다이어그램을 만들기 위한 지침이 포함된 엔터티 관계 다이어그램에 대해 전반적으로 이해하십시오.
gitmind.com
원인, 새롭게 알게 된 사실
구성되어있는 테이블 구조만 하는 거기에, 설계도 구조만
데이터, 테이블 정보가 들어가는 게 아니라, 데이터는 엑셀 표 등에서
데이터 넣기 전에 구조화 작업이였다.
우리가 한 것은 데이터베이스 구조였다.
나는 처음에 스타벅스 drinks 이름을 다 넣으려고 했다.
영양정보의 칼로리 단백질 나트륨도 다 넣으려고 했고.
drinks의 데이터를 넣으려고 하다보니,
"블렌디드" "에스프레소"에 따옴표와 쌍따옴표를 해보았는데도
실행창에서 안 나와서 한글이라 그런가, 이상하다, 하고 있었다.
ERD에서는 그냥 단순히,
id/ name/ 등 표의 column 부분을 왼쪽에 적고,
오른쪽엔 숫자인지 문자인지 적어주면 되는 거였다.
- integer 숫자
- varchar 문자
다시 정리한 부분
나는 처음에는 팀원이 ERD의
table 값들은 데이터 값이 아니라,
colum name이라고 해도 이해가 안 됐었다.
car ERD 예시를 인터넷에서 보다 보니 이해 됐다.
그렇게 된다면, category테이블에 있던 id가, drinks 테이블에 categroy_id로 들어가고
신상 new 테이블의 id가, drinks테이블에 new_id로 들어간다는 것을 내가 정리하며,
이해가 빨리 되었다.
다시 만든 요소들
다시 엑셀에 ERD를 넣을 것을 정리해보았다.
새롭게 인지한 요소
만들다보니, 데이터베이스 테이블에선 와닿지 않았던 pk 를 인지하게 되었다.
primary key는 id 이고, 기준이 되는 column 이였다.
내가 막히는 부분 1
그리고 나는 코딩을 할 때마다 관계성, 부등호 이해를 바로 하는 것이 어려운 것 같다.
관계를 화살표로 연결해주는 부분
drink - category 관계 1:다
drink- nutrition 관계는 1:1로 하면서
table끼리 관계를 독립적으로 생각해야 한다는 것을 인지했다.
이렇게, 개발자는 혼자 해보면서 깨닫는 거구나 싶다.
추가로 멘토님이 알려주신 내용들
- tinyint (작은 숫자)
- Ref: > 로 연결
[drink] 테이블
- english_name text (3000자면 짤리기에, text로 쓰기도)
- 신메뉴 is_new로 많이 씀 (신메뉴 1, 신메뉴 아니면 0 : true, false)로 관리
자주 쓰는 게 좋은 것
- created_at datetime (필수)
- updated_at datetime (데이터에 따라)
가장 첫번째 칼럼은 id 로 시작해야한다는 것.
내가 막히는 부분 2
테이블 간 관계를 파악하는 것이 헷갈렸던 게 있었다.
1) drinks, drinks_image 관계
--> drinks 하나에, 서로 다른 이미지 2개를 갖고 있으니까
--> image 설명에는 image_url을 넣으면 된다는 것 (이걸 image 테이블로 따로 빼도 되고, drinks 의 columns 로 써도 된다 (정답은 없으니까)
2) allergy, drinks 관계
1단계. 하나의 음료에는 하나의 알러지 요소만 있을까? (no. 여러개 있음)
2단계. 하나의 알러지에는 하나의 음료만 속할까? (no. 여러개)
--> many to many 다대다 관계니까, 제3자의 table을 만들어서
drinks_allegry
id | drink_id | allergy_id |
1 | 1 | 2 |
2 | ||
3 | ||
allegies
id | name |
1 | 우유 |
2 | 대두 |
3 | 오징어 |
4 | 복숭아 |
5 | 밀가루 |
drinks
id | name |
1 | 카라멜라떼 |
2 | |
3 |
그래도 리뷰 세션하기 전에, 혼자서 스스로 처음에 방향을 잘못 잡았다는 것을 깨닫고
다시 해보는 것을 했다는 것과
우리가 하는 과제의 목적을 알게 되었다는만으로도 일취월장했다는 생각이 들었다.
'Wecode - Foundation 1 (부트캠프) > Database(데이터저장소), ERD Modeling' 카테고리의 다른 글
Foundation 1- 데이터베이스 세션 (0) | 2023.09.28 |
---|