[TIL] 입문 프로젝트 (3) - 개발 환경 구성하기

J쭈디·3일 전
0

Sparta_프로젝트

목록 보기
35/35

회의, 또 회의

1. 수정된 프로젝트 git pull 해오기

오늘 오전에는 알고리즘이 끝난 후 Infisical이라는 secret maneger시스템과 Flyway라는 DB관리 시스템이 적용된 프로젝트를 각자가 실행해보는 시간을 가졌다.

Infisical, FlyWay는 무엇인가?

Infisical은 개발할 때 중요한 설정파일들을 안전하게 공유할 수 있는 일종의 클라우드 시스템이라고 한다.

Infisical에 대한 환경셋팅은 팀장님과 기술팀장님이 새벽에 다 해주신 후여서 나는 솔직히 할 게 별로 없었다. 그저 PowerShell을 켜고 아래 순서대로 입력해주면 되었다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 
//무반응시 iwr~ 부터 입력
y 
iwr -useb get.scoop.sh | iex
scoop bucket add org https://github.com/Infisical/scoop-infisical.git
scoop install infisical

그리고 또 하나, DB 관리를 위한 시스템을 사용하기로 했다. FlyWay라는 프로그램인데 SQL의 스키마를 관리하는 툴인 듯 하다. FlyWay쪽에 연결해서 사용하는 방식인 듯 하다.
사실 요 부분은 아직 뭔지 잘은 모르겠다

git 사용법 숙지하기

우리 팀은 git에서 컨플릭트가 나거나 머지 할 때 문제가 생기거나 한다면 서로 소통을 반드시 하자고 약속했고, 기술팀장님이 컨플릭트 해결법도 화면공유로 알려주셨다.

인텔리제이에만 익숙해진터라 git Desktop 등으로 해결하는 방식을 보고 신기했다. 사실 인텔리제이가 좀 넘사벽으로 편한 툴인데 유료이기 때문에 단기심화 과정이 끝난다면 git Desktop을 써야할 날이 올지도 모르겠다.

2. DML 더미데이터 만들기

오후에는 나에게 DML 더미데이터를 만들라는 이야기가 나왔다. 다른 팀원 분께서 Entity를 맡으셨는데 Entity를 각자 하게되면 git 컨플릭트 문제가 날 가능성이 높기 때문에 차라리 한 명이 Entity를 작성하는 것으로 의견이 모였다.

나의 경우 DML 더미데이터를 만들면서 계속 Entity 작성 중이신 팀원 분께 현재 우리 팀의 ERD가 가지고 있는 소소한 문제들을 어떻게 Entity로 녹이실 지를 물어보고 DML 작성에 참조하였다.

우리가 가진 테이블은 매핑테이블까지 총 13개나 된다. 그렇기 때문에 처음에는 어쩔 수 없이 GPT에게 큰 틀은 도움을 받았다.

1. ERD는 어려워

ERD를 보면 볼 수록 문제가 많았다. 예를 들어서 PK로 주소ID가 있는데 그 아래에 한 개 더 PK인 주소 컬럼이 있다거나, ERDcloud 작성 테이블을 옮길 때 오류가 난 건지 뜬금없이 카테고리와 카테고리 매핑테이블에 회원번호가 FK 되어있기도 했다.

사용자 Review와 사장님의 답글인 OwnerReview 테이블이 1:1 관계로 연관되어 있는다. 일반 Review에 FK인 회원번호가 있었고, OwnerReview에도 FK인 회원번호가 있었다. 그런데 이상하게도 OwnerReview에는 회원과의 연관관계가 없어서 다시보니...
설마설마 ERD 상에서 일반 Review의 회원ID를 기반으로 한 회원번호가 연결되어 있었던 것이다.

그림으로 보자면 아래와 같다.

이렇게 보면 리뷰테이블의 회원번호와 사장님의 답글테이블의 회원번호가 동일한 번호로 연관관계가 맺어져있다는 것이다.

답글테이블에는 당연히 사장권한을 가진 회원번호가 입력되어야 하기 때문에 아래와 같은 연관관계로 변경하였다.

이렇게 회원테이블에서 연관관계를 끌어와서 사장리뷰(답글)테이블에도 연관관계를 설정하는 것으로 수정을 했다.

그리고 이걸 토대로 DML을 열심히 수정해나갔다.

2. 컬럼의 논리적 표기는 카멜, 물리적 사용은 스네이크

우리가 쓰고 있는 ERD가 카멜케이스인데 이게 물리적으로 DB에 들어간다면 대문자 부분이 있기 때문에 전체 컬럼명이 모두 대문자로 바뀌는 문제가 발생한다고 한다.

그 때문에 ERD 등 논리적인 표기는 그대로 카멜케이스로 작성하되, 물리적인 DB를 설계할 때는 스네이크 케이스로 작성해서 사용하기로 했다.

근데 이게 Spring Boot 프로젝트 안의 Entity에서는 애초에 카멜케이스로 컬럼을 작성해야 DB에서 스네이크로 인식한다던데, 내가 작성하고 있는 DML 쿼리문은... SQL이기 때문에 전부 소문자와 언더바로 바꾸는 작업을 해야했다.

ERD에서 몇가지 부분은 Enum타입으로 하자고 이야기도 하면서 DML은 임시로나마 작성을 완료했다.

profile
언제 어느 위치에 있더라도 그 자리의 최선을 다 하는 사람이 되고 싶습니다.

0개의 댓글