이번 이동봉사 중개 서비스를 구현하는 데 있어서 고민되는 부분이 있었다!
게시글에 여러 이미지가 들어갈 수 있기 때문에 게시글 테이블과 이미지 테이블을 분리했다.
그런데 게시글에는 대표 이미지가 따로 있어서 대표 이미지를 어떻게 넣을까 고민하다가 처음에는 아래와 같이 String 타입의 mainImage 컬럼을 만들어서 해당 컬럼에 이미지 url 값을 저장하면 되겠다! 라고 생각했다.
(그러면 join해서 가져오지 않아도 게시글 목록을 불러올 때 대표 이미지를 더 빠르게 불러올 수 있을 것이라 생각했다.)
하지만 . .
다시 생각해 보니 정규화가 되지 않았다는 것을 알 수 있었다.
게시글 테이블에 이미지 url이 들어가는 것은 잘못된 설계라는 것을 깨달았다.
이미지에는 이미지만 따로 들어가야 하지만 공고에 대표 이미지가 들어가게 된다면, 추후 대표 이미지를 수정하거나 이미지와 관련한 추가 기능이 생겼을 때 변경하는 데 큰 비용이 들 것이라 생각했다!
(게시글 이미지는 한 테이블에서 관리하는 것이 유지보수에 용이하다.)
그렇다면 게시글과 게시글 이미지를 1대1 매핑해서 게시글 이미지에 올라간 대표 이미지의 PK를 게시글에서 외래키로 관리하면 되겠다고 생각해 다음과 같이 erd를 수정하였다.
게시글과 게시글 이미지는 1대1 연관 관계, 1대다 연관 관계를 가져,
1대1 연관 관계의 주인은 게시글 테이블
1대다 연관 관계의 주인은 이미지 테이블로 지정했다!
'Trouble Shooting' 카테고리의 다른 글
saveAll 사용 시 쿼리가 여러 번 나가는 문제 이유는? (1) | 2023.11.11 |
---|---|
S3 이미지 업로드 시 나타나는 warn 로그 (1) | 2023.11.11 |
RDB vs NoSQL (0) | 2023.10.20 |
소셜 로그인, JWT 관련 의문점 정리 (0) | 2023.10.18 |
CI/CD 트러블 슈팅 (0) | 2023.07.25 |