테이블의 필드값의 개수가 너무 많다면?

sseongeun·2024년 9월 8일

스프링

목록 보기
8/13

테이블의 필드값의 개수가 너무 많다면 어떻게 해야하는가?

✔️ 동아리의 entity를 제작하는 과정에서 생긴 문제이다!

동아리의 정보를 담아야하는 Club 엔티티의 필드값이 하나하나 추가해보니 너무 많아졌다.

기본적으로 동아리의 정보로 필요한 것에는
id(DB에 저장되는 PK), 동아리명, 동아리의 분과, 동아리의 단과대, 동아리의 학과, 동아리 소개, 동아리 방, 동아리 리더, 동아리 활동 등 .... 너무 많았다..

📌 문제점은 무엇인가?

동아리에 대한 정보를 가져오는 api 제작시, 물론 dto를 필요한 필드값들로만 구성해서 반환해주면 되지만,테이블이 너무 많은 필드값으로 구성되어있을 때의 문제점은 꽤 존재했다

1️⃣ 유지보수의 어려움
엔티티의 구조가 복잡해져, 전체 구조를 파악하는데 있어 어려워진다.
2️⃣ DB의 성능 최적화
Club의 일부 필드만 조회해야하는 경우에도 많은 필드를 불필요하게 읽어와야하는 경우가 많ㄷ나.
3️⃣ 지나친 책임
만약 하나의 엔티티가 너무 많은 필드값을 가지고 있으면, 지나치게 많은 책임을 가지게 된다.
-> 따라서 관심사에 따라 엔티티를 분리하자
4️⃣ 스키마 변경의 유연성
스키마를 변경해야하는 경우, 성능저하를 유발할 수 있다
-> 만약 각각의 테이블에서 스키마를 독립적으로 수정하면 유연성 ↑


✅ 어떻게 해결하였는가

  • 자주 조회가 이루어지는 필드값들은 club에 두고
  • 조회가 거의 이루어지지 않는 필드값들을 clubInfo라는 테이블에 넣었다
  • 그후, club과 clubInfo를 club->clubInfo로 단방향 OneToOne 매핑하였다

그 결과, club의 자세한 필드값을 모두 가져와야하는 경우에만, getClubInfo()로 데이터를 불러와 사용하였다.

  • club의 필드값만 가져와도 되는 경우

  • club과 해당 클럽의 clubInfo를 모두 가져와야하는 경우


💻 항상 유지 보수, 조회의 성능을 고려하여 테이블을 설계하자!

profile
공부 기록...

0개의 댓글