-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BE] chore: flyway 설정 #601
Conversation
Test Results91 tests 91 ✅ 3s ⏱️ Results for commit 27544b9. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
한 번 확인해주시면 감사하겠슴다 👍🏻 고생했어요!
on_selected_option_id BIGINT, | ||
position INTEGER NOT NULL, | ||
section_name VARCHAR(255) NOT NULL, | ||
visible_type ENUM ('ALWAYS','CONDITIONAL') NOT NULL, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
기존 테이블은 Hibernate가 만들어줘서 Enum을 가지고 있지만, 추가적으로 유연하게 진행하기 위해서는 ENUM 대신 VARCHAR로 두는 건 어떨까요? DB가 어플리케이션을 의존하고 있다고 보여지기도 해요~!
어플리케이션에서는 Enum이 String형식으로 들어가게 되어 있으니깐요 😁
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코멘트를 보고 Java에서의 enum을 DB에서 관리하는 방법에 대해 생각해봤어요~ 새삼 중복 데이터가 있는 구조라는 생각이 들어서 3번 참조테이블 방법도 떠올랐는데, 데이터 규모가 크지 않다면 Varchar 타입이 간단하겠네요!
1. Enum 타입
장점
- varchar에 비해서 저장 용량이 적고, 조회가 빠름 → 근데 우린 @Enumerated(EnumType.STRING)라서 이 장점이 없음
단점
- enum이 추가, 변경되면 DDL이 변경되어야함.
2. Varchar 타입
장점
- 인덱스 적용하면 조회 성능도 챙길 수 있어서 간단한 구조로 하기 좋음
단점
- 데이터 중복 발생, 이로인해 저장 공간이 더 많이 들게됨
3. 참조 테이블을 만드는 방법
장점
- 데이터 중복을 없앨 수 있다. 저장공간이 절약됨.
- enum에 해당하는 데이터가 추가되거나 수정될 때 참조테이블만 수정하면 되니 변경에 대응하기 쉽다.
단점
- 조회할 때마다 join이 일어나야한다.
- 테이블이 늘어나 구조가 복잡해진다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DDL보다는 어플리케이션단에서 추가하는 게 더 유연하겠습니다 👍
DROP TABLE IF EXISTS checkbox_answer CASCADE; | ||
DROP TABLE IF EXISTS checkbox_answer_selected_option CASCADE; | ||
DROP TABLE IF EXISTS option_item CASCADE; | ||
DROP TABLE IF EXISTS option_group CASCADE; | ||
DROP TABLE IF EXISTS section_question CASCADE; | ||
DROP TABLE IF EXISTS question CASCADE; | ||
DROP TABLE IF EXISTS section CASCADE; | ||
DROP TABLE IF EXISTS review CASCADE; | ||
DROP TABLE IF EXISTS review_group CASCADE; | ||
DROP TABLE IF EXISTS template_section CASCADE; | ||
DROP TABLE IF EXISTS template CASCADE; | ||
DROP TABLE IF EXISTS text_answer CASCADE; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DROP은 조금 위험하지 않을까요 🤔 단순한 명시 목적이면 이 부분은 없어도 좋겠네요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
만약 처음부터 schema.sql로 스키마를 생성했다면...을 가정해서 넣은 부분인데, 위험성이 더 있겠네요. 반영완료!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
시크릿 레포 설정파일도 모두 확인했습니다. 고생했어요 ~~ 👍👍
DROP TABLE IF EXISTS review_group CASCADE; | ||
DROP TABLE IF EXISTS template_section CASCADE; | ||
DROP TABLE IF EXISTS template CASCADE; | ||
DROP TABLE IF EXISTS text_answer CASCADE; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
명시 목적에서 드랍사용 이유가 궁금합니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
만약 처음부터 schema.sql로 스키마를 생성했다면...을 가정해서 넣은 부분인데, 위험성이 더 있겠네요. 제거했어요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
학습하느라 고생했어요~ 공유 부탁합니다 흐흐
🚀 어떤 기능을 구현했나요 ?
🔥 어떻게 해결했나요 ?
📝 어떤 부분에 집중해서 리뷰해야 할까요?
📚 참고 자료, 할 말
(예: sql문에 에러가 있으면 어플리케이션은 뜨지 않지만 롤백이 되지 않습니다. 즉, flyway_schema_history 테이블에 해당 버전의 sql이 추가가 된다. 이럴 경우 db에서 해당 버전 row를 직접 삭제해주고 해당 버전의 sql 파일을 다시 만들어야하니 조심!)