DB 구조 수정, 엔티티 명 수정 (많은 오류가 발생했다...)

Ryu·2022년 9월 6일
0

DB 구조 수정

✅ 문제점과 해결책 제시

  • 기존에는 메뉴 옵션만 존재해서, 한 메뉴가 가질 수 있는 옵션들을 그룹핑 할 수 없었다.
    • 옵션그룹 엔티티를 새롭게 추가해서, 옵션그룹과 옵션을 다대다 관계로 맺어줬다.
    • 다대다인 이유는, 옵션 하나가 여러 옵션에 속할 수 있고, 옵션그룹이 여러 옵션들을 가질 수 있기 때문이다.
  • 또한, 옵션에 따라서 다중선택이 허용될 수 있고 (떡사리 추가, 치즈 추가 등) 허용되지 않을 수 있다.(Hot, Ice 둘 중 하나 선택)
    • DB 수정이 불가피했고, 메뉴 옵션 엔티티에 isMultiple 이라는 다중선택 여부에 대한 정보를 넣을 수 있도록 boolean 형태로 새로운 column 을 추가했다.

⭐ 옵션 그룹과 옵션에 중간 테이블을 두는 이유

  • 실제 데이터들을 몇 개 넣어보면, Column 이 많아질수록 중복되는 데이터 값이 생기는 것을 알 수 있다.
  • 만약, 중간테이블을 두면 각 테이블에 대한 외래키를 가져와서 저장하기 때문에, 수 많은 Column 중복 없이 쉽게 연관관계를 맺을 수 있다.
    결국, 핵심은 중복의 제거이다.

엔티티명 수정

✅ 기존에 메뉴, 메뉴옵션 엔티티가 다대다로 연결.

  • 이에 중간테이블이 메뉴_메뉴옵션 테이블 이런 식으로 메뉴가 중복된다고 생각해 메뉴옵션 엔티티를 ‘옵션’ 엔티티로 변경했다.
  • 충돌 방지를 위해 현재 진행하고 있는 이슈에 대해 commit, pull request 를 진행했고 하나의 main 프로젝트로 관리하기 위해 새로운 로컬 branch 를 파서 진행했다.

엔티티명 수정 후 엔티티가 생성되지 않는 오류 발생.

✅ 계속해서 MySQL Syntax Error 가 발생

  • 아무리 찾아봐도 쿼리 문법 오류를 발견하지 못했다.

👍 해결

  • 구글링 결과 , MySQL 예약어 부분에 option 이라는 예약어가 있는 것을 발견.
  • Option 엔티티 테이블 명을 OPTIONS 로 변경 후 실행하니 해결.
  • 실제로 Order 와 같은 엔티티도 예약어 문제로 인해 테이블명을 ORDERS 로 생성한다는 것을 알게 됨.
profile
Strengthen the core.

0개의 댓글