https://deveric.tistory.com/59
위 글에서 이어지는 내용입니다.
조인하는 테이블을 하나 줄였지만 여전히 7개의 테이블을 주인하여야 고객의 주문 내역을 조회할 수 있습니다.
주문시 조인하는 테이블
주문 - 주문 메뉴 - 주문메뉴 옵션 - 메뉴 옵션 - 메뉴옵션 카테고리 - 메뉴 - 고객
이번에는 여기서 '메뉴옵션 카테고리'테이블을 역정규화 해보는 것이 어떨까 생각하고있습니다.
현재는 메뉴옵션 카테고리 밑에 메뉴 옵션이 있는 구조로 되어 있습니다.
이전 글에서 만들어 놓은 테이블을 다시 보여드리자면 다음 구조와 같습니다.
후라이드 치킨 - 17,000원
Category - 시즈닝 |
1. 치즈 시즈닝 추가 (500원) |
2. 양파 시즈닝 추가 (500원) |
Category - 곱빼기 |
양 200g 추가 (3000원) |
Category에 있는 부분을 테이블로 따로 뺐지만, 카테고리 테이블은 자체적으로 가지고 있는 정보가 얼마 되지 않는다고 판한하였고 메뉴옵션 카테고리의 테이블 정보를 메뉴 옵션에 포함시키는 방법을 고려하였습니다.
현재 메뉴 옵션 - 메뉴옵션 카테고리 - 메뉴 카테고리의 관계는 다음과 같습니다.
이중 메뉴 옵션 테이블의 '카테고리 아이디' 부분을 '카테고리' 정보로 바꾼다면 테이블 역정규화가 가능할 것입니다.
'메뉴 옵션' 테이블에 추가할 컬럼은 '메뉴 옵션 카테고리'가 가지고 있는 정보인 '카테고리 이름'과 '메뉴 아이디'입니다.
이를 반영한 결과는 다음과 같습니다.
메뉴 옵션 테이블을 조회 할 때 카테고리 별로 보여주고 싶다면, 카테고리별로 정렬시킨 이후 보여주면 될 것입니다.
조인 테이블이 하나 더 줄어들어서 성능 개선에 도움이 되었으면 좋겠습니다.
현재 주문내역 조회시 조인 테이블은
주문 - 주문 메뉴 - 주문메뉴 옵션 - 메뉴 옵션 - 메뉴 - 고객
총 6개입니다.
성능을 조금이라도 더 좋게 하기 위해 이제 역정규화보다는 인덱스를 활용해보려고 합니다.
'Project > DelFood' 카테고리의 다른 글
[이슈 #5] 반복되는 로그인 체크 로직을 AOP로 리팩토링하기 (4) | 2019.11.01 |
---|---|
[이슈 #4] 주소를 외래키로 관리하도록 변경(공공데이터 사용) (1) | 2019.10.27 |
[이슈 #3] 아이디 중복 체크시 Http Status값을 어떻게 설정해야 할까? (2) | 2019.10.06 |
[이슈 #1] 고객의 주문 내역을 조회할 때 테이블 다수 조인 이슈 (0) | 2019.09.23 |
[DelFood] 프로젝트 소개 (0) | 2019.09.23 |
댓글