안녕하세요! 백엔드 개발자를 꿈꾸고 있는 취준생입니다! 최근 진행 중인 프로젝트에서 api와 DB를 개발하던 중 궁금한 사항이 생겨 질문 올려봅니다! (기술 스택은 spring boot, mybatis, mysql 활용 중입니다.) 처음 기획 단계에서 DB를 설계할 때 이론적으로 배웠던대로 데이터 중복 저장을 최소화 하고 데이터 간의 관계를 최대한 반영하기 위해서 테이블을 무작정 잘게 나눴는데요! 설계 후 개발 과정에서 까다로운 사항들과 계속 마주치게 되더라구요..! 지금 생각나는 까다로웠던 사항들만 대략 정리해보면, - 테이블 간의 관계가 복잡해져 쿼리가 길어지고 복잡해졌고,(가독성에도 영향을 주는 듯 하더라구요!) - 특정 데이터를 조회할 때, 오직 join 조건만을 위해 여러 테이블들이 탐색되어지는 경우 발생했고, - 데이터 변경(삽입 수정 삭제) 과정이 까다로워졌고, - 테스트를 위한 더미 데이터 설정에 어려움이 있었어요..! 성능적으로 효율적인게 가장 중요하지만, 개발 과정에서의 효율성(소요 기간, 가독성, 유지보수 등) 또한 중요하다고 알고 있어서요! 그리고 join이 많이 수행되는게 데이터 수가 늘어남에 따라 오히려 성능 저하로 이어지는 경우가 있을 것이라 생각되었습니다! 그래서 실무에서는 상황에 따라 테이블 분리 정도가 다를 것 같은데, 이때 어느정도까지 분리하는게 적절한지 논의하는 과정에서 주로 어떤 사항들에 대한 고민이 이루어지는지 여쭤보고 싶습니다! 구구절절한 질문 읽어주셔서 감사합니다 :)..
지금 가입하면 모든 질문의 답변을 볼 수 있어요!