본문 바로가기
프로젝트/자리 있어요?

[Refactoring, OracleDB] 22.08.22. DB table에서 storeName column 지우기

by 규글 2022. 8. 23.

DB table에서 storeName column 지우기

 현재 DB table에는 매장 정보를 가진 table 이외에도, 주문 정보와 리뷰 정보를 가진 table에도 column으로 존재하고 있다. 만약 이렇게 된다면, 매장 정보 중 매장의 이름을 변경했을 때 나머지 table에서도 변경해줘야하는 문제가 발생한다. 예를 들어 매장의 이름이 A일 때 주문하고 리뷰를 작성했는데 이를 나중에 B로 변경한다면, 마이 페이지에서는 이름이 A인 상태로 출력될 것이다. 따라서 해당 column을 지워주고, front에 매장의 이름을 함께 넘기는 것을 다른 방식으로 data를 넣어주려고 한다.

 

 이미 매장 메뉴 table에서는 storeName column을 지워주었으나, 언급만 하고 따로 기록하지 않아서 겸사겸사 기록해볼 것이다.

 

 최신 oracle이라면 현재 table 그대로 column을 추가하거나 column의 순서를 바꿀 수 있다고 한다. 하지만 필자의 oracle은 구버전이라서 불가능해서 Review table은 다시 만들었고, data는 옮겨줄 수 있었다.

 

  • Table 이름 바꾸기
alter table oldTable
rename to newTable

 

  • Table의 data 옮기기
insert into newTable (col1, col2,...)
select col1, col2,...
from oldTable
where...

 DB의 메뉴 table에서 사용할 필요가 없는 imageCheck column을 삭제하고, 평균 별점인 avgStar와 전체 review의 수인 reviewCount column을 중간에 넣어서 새로 만들어주었다. 그때 기존 table에서 새 table로 나머지 data를 옮길 때 사용해주었다.

 

  • Table의 column 삭제하기
alter table tableName
drop column columnName;

 

 이렇게 주문 table에서 storeName에 대한 column을 지워주었으므로, 기존에 DB로부터 조회했던 storeName의 값을 setter method로 따로 넣어주어야 마이 페이지에서 조회할 수 있게 된다.

댓글