오류가 있을 경우 알려주신다면 정말 감사하겠습니다! 🙏🏼
메뉴에서 음료만 모델링
AQuerytool 사용
https://aquerytool.com/
먼저 음료의 카테고리로 9개가 있음
이해를 하기 위해 엑셀로 그려봄
category 테이블을 만들고
pk(primary key)가 되는 id 열은 모든 테이블에 넣어주어야 함
그리고 category_name 열이 옴
이걸 AQeurytool로 만들어보면
하나씩 뜯어보면
모든 테이블에 id가 pk임 약간 맨 앞 번호인 것
PK : 고유 번호. 각 행의 구분점
AI : auto increase 였나 자동으로 번호 매겨지는 것
FK : foreign key로 다른 테이블의 pk를 의미함 연결고리 같은 것
Logical Name : 안써도 됨. 보기 편하게 설명 같은 것
Name: 테이블의 각 열(column)
Null : 여기 체크를 하면 데이터를 아무것도 넣지 않는 null을 허용한다는 의미
Type 종류 몇가지
헷갈렸던 부분
다음 이 화면을 보고 음료 테이블을 만들어야 함
여기 있는 정보는
여기서 이름, 설명은 따로 테이블로 빼지 않고 이 테이블의 열에 포함시키면 됨
나머지 영양정보와 알레르기 요인, 사진은 따로 테이블로 빼서 만들어야 함. 왜냐면 담을 정보의 항목?이 2개 이상 필요하기 때문!
특히 사진을 컬럼에 저장하지 않고 테이블로 빼서 만드는 이유는
확장성을 위해서라고 배움. 위 예시는 사진이 1개이지만 여러개 있는 사진도 있고 추가될 경우를 대비해서 음료 1개에 사진 N개 이런 개념
이미지가 추가될 경우 컬럼을 추가하는 것이 아니라 이미지 테이블에 url만 넣어주면 됨
엑셀로 만들어보기
이렇게 노란색 열이 아래 테이블의 Name 밑으로 입력되어야 함
중요한 것은 category_id
이 category_id는 category 테이블과 연결되기 위한 fk로써 두 테이블간 관계는 category 1 : drink Many 관계임. 콜드브루 라는 카테고리 하나에 (직접 들어가보면) 13개의 음료가 있고 이 음료들 입장에서 하나의 음료는 다른 카테고리에는 속하지 않으므로.
마찬가지로 영양정보 nutrition 테이블도 만들어주고
음료 1개에 영양정보는 1개인 1:1 구조라는 걸 이해하고
drink 테이블의 pk를 영양정보 테이블의 fk로 받아와서 연결!
아 생각해보니까 nutrition 테이블의 몇가지는 타입이 decimal로 해줘야겠음(바쁘니 마음으로만 바꿔줌)
똑같이 images 테이블도 만들어 줌
이것은 음료 1개에 이미지가 N개인 one to many 관계
이제 가장 어려웠던 many to many 관계였던 음료와 알러지
음료 1개에 두유, 우유, 땅콩, 밀 등 여러 알러지 요인이 있을 수 있고
우유 라는 알러지 요인은 여러 음료에 속할 수 있기 때문에
이것은 다 대 다 관계
다대다 관계의 두 테이블을 연결해주기 위해서는 fk만 모여있는 중간테이블이 필요하다!
일단 엑셀에서 알러지 테이블을 만들어보면
이건 위에 만들어놓은 drink 테이블 예시
이제 AQueryTool에서 만들어보면
allergy 테이블
여기서 allergy name의 null을 허용하지 않은 이유?
allergy 테이블에 빈칸을 허용하지 않겠다는 의미
allergy테이블과 drink 테이블을 연결시켜주기 위해 중간테이블을 만들어보면
이 allergy_drink 테이블은 일단 다 fk로 구성되어 있고 그 fk들은 각각 allergy테이블의 pk와 drink 테이블의 pk를 받는다
결론 : 머리 아프다