오후에 배운 데이터 베이스 세션을 듣고, 직접 데이터의 흐름을 따라 모델링을 진행해봤다!
스타벅스 모델링을 직접 해보는 것이었다!
모델링 사이트는 dbdiagram.io 를 사용했다. (튜토리얼 노션)
처음에 생각했던 방식은 크게 카테고리를 타고 들어가서 세분화하는 것이었다.
💡 메뉴 → 음료 → 카테고리 → 상세음료 → 디테일한 음료정보
카테고리를 타고 들어가는 방법도 있지만, 사실 홈페이지에서 사진을 클릭하면 그 음료에 관한 상세정보로 넘어가기 때문에, 이미지를 기준으로 깊이 타고 들어가면 어떨까 생각을 해봤다.
이러한 로직으로….
💡 메뉴 → 음료 → 이미지(상세음료) → 디테일한 음료정보
왜냐하면 사용자 입장에서 카테고리를 타고 들어가기보다는 이미지를 클릭해서 들어갈 것 같기 때문이다. (내가 그래서 그럴지도)
내가 생각했던 방식으로 데이터 모델링을 진행해봤다.
dbdiagram 사용법
우선 Table 을 이용해서 원하는 이름의 테이블을 생성할 수 있다.
또한, 각 테이블은 고유한 PK , Primary Key 를 갖고 있으므로, id 를 기입해준다.
id int [pk] 의 뜻은 이름이 id, 자료형이 int, 키의 종류 [pk]를 뜻한다.
맨 밑에는 Ref 즉, Reference(참조)를 어떤 방향으로 할지 선택할 수 있다.
내가 짠 로직에 어떤 문제점이 있을지 생각을 해봤다..
- 먼저, 명확하지 않은 테이블 변수명!
- 복수, 단수의 이름으로 정확히 표현할 것
- 직관적인 변수명을 고심해봐야할듯 (왜냐하면, 메뉴-음료 와 에스프레소-아이스아메리카노 처럼 둘 다 drink로 하면 헷갈릴 수 있을듯)
- 카테고리를 타고 이미지로 들어올 경우 정보를 처리할 수 없음
- 나의 경우에는 detail_img에 카테고리란을 넣어두었지만, 반대로 카테고리를 타고 들어올 수 있기 때문에, iscategory를 따로 빼는 것이 나을 것 같다.
- 이미지와 연결될 수 있도록..
- 알러지는 일대다 관계인가? 다대다 관계인가?
- 어떤 음료에는 알러지가 없을수도, 어떤 음료에는 알러지가 2개, 3개 넘게 있을수도 있다.
- 이때, 알러지에 대한 정보를 따로 빼서 정리를 하면, 나중에 데이터를 보다 효율적으로 사용할 수 있게 된다.
- 알러지가 없다면, 테이블에 추가하지 않으면 되기 때문에
- 현재는 Tall 사이즈 한가지로 정해져있지만, 만약에 Grande 나 Venti 사이즈가 된다면 영양성분을 어떻게 관리할 것인가?
- 현재는 썸네일과 상세페이지의 이미지가 같지만, 상세페이지에 두개이상의 이미지가 포함 되어있다면?
- 나의 로직은 오류가 나게 된다.
- 일대일 관계로 로직을 짰기 때문이다.
멘토님 접근방식
나의 로직에서 발생할 모든 문제점이 해결되는 것은 아니지만, 큰 틀을 잡고 세분화해나가는 방시기 훨씬 유지, 보수하기 쉬울 것 같다.
다양한 옵션들을 입맛대로 추가할 수 있도록 테이블을 따로 빼서 관리하는 것이 좋다고 하셨다.
그렇게 해야 좀더 확장적인 사고를 할 수 있으며, 유연하게 문제 상황에 대처할 수 있다.
예를 들어, 햄버거를 판매하는 사이트가 있다고 가정해보자. 내가 이 사이트의 모델링을 진행한다면 어떠한 방식으로 로직을 짤 것인가?
햄버거의 경우에는 단품 메뉴도 있지만, 세트메뉴를 선택할 수도 있고, 양상추, 치즈, 토마토 등 다양한 옵션들도 선택할 수 있고, 사이드 메뉴를 어니언링으로 변경할 수도 있다.
이렇듯 고려해야할 요소들이 많은데, 햄버거, 세트, 옵션, 사이드 등을 한 테이블 안에 모두 다 포함해버리면, 나중에 사이드나 옵션을 선택하지 않을 때, 테이블은 데이터를 무의미하게 모든 것을 검사해버리게 되는 것이다.
따라서, 햄버거 테이블 따로, 옵션 테이블 따로, 사이드 테이블을 다 따로 구성한 후 중간테이블에서 데이터를 합치면 되는 것이다.
(사실 나도 약간 이해하기 어려운 개념이지만, 우선은 이런식으로 이해를 했다.)
다양한 방식으로 로직을 짤 수 있지만, 가장 최우선적으로 고려해야할 것은, 어떤식으로 큰 틀을 만들어둬야 나중에 코드를 재사용할 수 있을지, 어떻게 유지 보수를 쉽게할 수 있을지에 대한 고민을 충분히 해봐야하는 것이다.
아직은 많이 이해하기 힘들지만, 다양한 페이지의 데이터 모델링을 하다보면 자연스레 습득이 될 것이라 믿으며..........
'공부 > 개발 이모저모' 카테고리의 다른 글
Eclipse 내에서 프로젝트 import 가 안 될 때 해결방법 (0) | 2022.08.22 |
---|---|
eclipse 오류 없이 git 사용하기 (2) | 2022.07.24 |
데이터베이스(Database)와 관계형 데이터베이스(RDBMS) (0) | 2022.06.27 |
크롬 개발자 도구(Network Panel) (0) | 2022.06.25 |
Semantic Web & Tag, 시맨틱웹과 시맨틱 태그란? (0) | 2022.06.21 |