해당 포스팅에서는 공지사항, 리뷰, Q&A 테이블을 하나의 Board 테이블로 통합한 과정에 대해서 간략하게 정리해 보고자 한다.
프로젝트 초기에는 각각의 게시판이 서로 다른 특성을 가지고 있어서 개별 테이블을 만들어 관리하는 것이 좋겠다고 생각했다. 하지만 프로젝트를 진행하면서 각각의 게시판 테이블을 유지하는 것이 여러 가지 문제를 일으킬 수 있다는 것을 깨달았다.
중복된 코드와 로직: 각각의 게시판 테이블을 별도로 유지하면 중복된 코드와 로직이 발생할 수 있다. 각 게시판마다 필요한 코드와 로직을 반복해서 작성해야 하므로 코드의 재사용성이 떨어지고 유지보수가 어려워진다.
조회 및 관리의 어려움: 여러 개의 테이블을 관리해야 하므로 조회나 관리 작업이 번거로워질 수 있다. 데이터의 일관성을 유지하기 위해 각 테이블 간의 조인이 필요할 수 있으며, 이는 성능에도 영향을 줄 수 있다.
테이블 관리의 복잡성: 각각의 게시판 테이블을 따로 유지하는 것은 테이블 관리의 복잡성을 증가시킬 수 있다. 새로운 게시판을 추가하거나 기존의 게시판을 수정할 때마다 테이블을 변경해야 하므로 관리가 번거로울 수 있다.
데이터 중복성: 각각의 게시판 테이블을 별도로 유지할 경우 데이터 중복성이 발생할 수 있다. 공통된 데이터가 중복되어 저장되면 데이터의 일관성이 해치고 저장 공간을 낭비할 수 있다.
따라서 기존의 게시판 관련 테이블을 모두 제거하고 새로 Board 테이블을 추가했다.
각각의 게시판 테이블들을 하나로 통합하는 경우에 다음과 같은 장점이 있다.
중복 코드와 로직 최소화: 통합된 테이블을 사용하면 각각의 게시판에 중복되는 코드와 로직을 최소화할 수 있다. 공통된 부분은 한 번만 작성하여 코드의 재사용성을 높일 수 있다.
조회 및 관리 간편화: 하나의 테이블을 관리하므로 조회나 관리 작업이 훨씬 간편해진다. 조인이 필요 없어지고 데이터의 일관성을 유지하는 데에도 용이하다.
테이블 관리 단순화: 하나의 테이블을 유지보수하면 되므로 테이블 관리의 복잡성이 줄어든다. 새로운 게시판을 추가하거나 기존 게시판을 수정할 때 테이블을 변경할 필요가 없다.
데이터 중복 최소화: 통합된 테이블을 사용하면 데이터 중복성을 최소화할 수 있다. 공통된 데이터는 한 번만 저장되므로 데이터의 일관성을 유지하고 저장 공간을 절약할 수 있다.
하지만 주의할 점은 통합된 테이블을 설계할 때 각각의 게시판이 가지는 특성을 충분히 고려하여 설계해야 한다. 각각의 게시판이 가지는 특성을 충분히 고려하지 않고 통합된 테이블을 설계하는 경우 각각의 게시판이 서로 다른 속성을 가지고 있기 때문에, 통합된 테이블에는 각각의 게시판에 필요한 속성들이 혼합되어 저장될 수 있다. 이로 인해 데이터의 불일치가 발생할 수 있다.
예를 들어, 리뷰 게시판은 평점이나 작성자의 정보를 가지고 있고, 문의 게시판은 답변 여부나 작성자의 정보를 가질 수 있다. 이 두 게시판을 하나의 통합된 테이블에 저장할 경우, 리뷰에는 답변 여부와 같은 속성이 필요 없으며, 문의에는 평점과 같은 속성이 필요 없을 수 있다. 따라서 통합된 테이블에는 각각의 게시판에 필요한 속성 외에도 불필요한 속성들이 저장될 수 있고, 이로 인해 데이터의 불일치가 발생할 수 있다.
이러한 데이터 불일치 문제는 데이터베이스의 일관성을 해치고, 정보의 정확성을 보장하기 어렵게 만든다. 또한, 잘못된 정보가 사용자에게 전달되거나 올바르지 않은 결과가 나타날 수 있어 신뢰성을 저하시킬 수 있다.
이 외에도 유지보수의 어려움, 쿼리 복잡성 증가, 성능 저하 등의 문제가 발생할 수 있다.