- 📌 김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
- 📌 기간 : 2026.02.09 ~ 2026.08.27
1. 서론
데이터베이스 설계 패턴이 궁금해서 보게 되었습니다. 실무에서 접했던 여러 데이터베이스 설계 방식들이 단순히 관습적으로 사용되는 것이 아니라, 각각의 장단점과 사용 목적을 고려하여 선택된다는 점을 알게 되었습니다.
특히
- 모든 설계 패턴에는 장점과 단점이 있다.
- 트레이드오프를 이해하고 근거 있는 선택을 하는 것이 진짜 설계 능력이다.
라는 내용이 인상 깊었습니다.
2. 내용 정리
공통 코드 설계
-
공통코드 그룹화 설계
- 공통코드를 그룹코드와 상세코드로 분리하여 관리하는 방식
- 여러 업무에서 동일한 코드 체계를 재사용할 수 있어 범용적으로 활용할 수 있음
- 장점
- 코드값의 일관성 및 관리 용이성 확보
- 코드 추가, 변경 시 중앙에서 관리 가능
- 단점
- 코드명을 조회할 때 공통코드 테이블과 JOIN이 반복적으로 필요
-
하이브리드 전략
- 애플리케이션의 상수/ENUM과 공통코드 테이블을 함께 사용하는 방식
- 애플리케이션 상수/ENUM
- 코드값 정의
- 코드에 따른 비즈니스 로직 제어
- 공통코드(DB)
- 화면에 표시할 코드명 관리
- 설명, 정렬순서, 사용여부 등 부가 속성 관리
-
비즈니스 로직과 화면 표시 정보를 분리하여 관리할 수 있음
계층 구조 설계
-
쇼핑몰 카테고리, 조직도, 댓글 등 트리 형태의 계층 구조를 저장하고 조회하기 위한 설계 전략
-
데이터의 추가·수정뿐만 아니라 특정 노드의 하위 또는 상위 데이터를 어떻게 조회할 것인지 함께 고려해야 함
-
인접 리스트 모델
- 각 행이 자신의 부모 ID를 참조하는 자기 참조 방식
- 가장 직관적이고 널리 사용되는 계층 구조 모델
- 장점
- 구조가 직관적임
- 데이터의 추가, 수정, 이동이 간단함
- 저장 공간을 효율적으로 사용할 수 있음
- 단점
- 특정 깊이 이상의 모든 자손이나 조상을 조회하려면 여러 단계의 탐색이 필요함
-
재귀 쿼리
- 인접 리스트 모델에서 계층 구조를 재귀적으로 조회하기 위한 SQL 방식
WITH RECURSIVE또는 DBMS에서 제공하는 재귀 기능을 활용하여 부모·자식 관계를 반복적으로 탐색- 장점
- 별도의 경로 테이블 없이 여러 단계의 하위·상위 데이터를 조회할 수 있음
- 단점
- 계층이 깊거나 데이터가 많을 경우 쿼리 비용이 증가할 수 있음
- Oracle에서는
START WITH ... CONNECT BY를 이용하여 계층형 데이터를 조회할 수 있음
SELECT CATEGORY_ID, PARENT_ID, NAME, LEVEL FROM CATEGORY START WITH CATEGORY_ID = 1 CONNECT BY PRIOR CATEGORY_ID = PARENT_ID; -
폐쇄 테이블 모델
- 모든 부모·자손 관계를 미리 계산하여 별도의 경로 테이블에 저장하는 방식
- 일반적으로 자기 자신과의 관계까지 함께 저장한다.
- 장점
- 재귀적인 탐색 없이 단순 JOIN으로 하위 데이터를 빠르게 조회할 수 있음
- 단점
- 카테고리 이동, 추가, 삭제 시 관련 경로 데이터를 함께 변경해야 함
- 계층 구조의 조회가 빈번하고 변경이 상대적으로 적은 경우 적합
상속 관계 설계
-
구현 클래스마다 테이블 전략
- 각 서브타입을 별도의 테이블로 만들고 공통 속성까지 각각 포함하는 방식
- 장점
- 구조가 단순하고 직관적임
- 서브타입별 데이터 조회가 간단함
- 단점
- 공통 속성 변경 시 여러 테이블을 수정해야 함
- 전체 서브타입을 통합하여 조회하기 어려움
- 예시
PRODUCT_BOOKPRODUCT_ALBUMPRODUCT_MOVIE
-
단일 테이블 전략 ⭐
- 부모와 자식의 모든 속성을 하나의 테이블에 통합하는 방식
- 장점
- 테이블 구조가 단순함
- JOIN 없이 데이터를 조회할 수 있어 조회가 편리함
- 단점
- 특정 서브타입에서 사용하지 않는 컬럼이
NULL로 저장될 수 있음
- 특정 서브타입에서 사용하지 않는 컬럼이
- 특징
- 서브타입별 속성이 많지 않고 구조가 단순한 경우 적합
- 예시
PRODUCT하나의 테이블에 상품 공통 정보와 상세 정보를 함께 저장
-
조인 전략 ⭐⭐⭐
- 부모와 자식을 각각의 테이블로 분리하고 PK/FK 관계로 연결하는 방식
- 장점
- 데이터 중복을 줄일 수 있음
- 정규화된 구조로 유연한 확장이 가능함
- 서브타입별 속성을 명확하게 분리할 수 있음
- 단점
- 조회 시 JOIN이 필요하여 SQL이 복잡해질 수 있음
- 여러 테이블을 JOIN하는 경우 조회 비용이 발생할 수 있음
- 특징
- 정규화된 관계형 데이터베이스 설계에 적합한 일반적인 방식
- 예시
PRODUCT: 상품 공통 정보 저장PRODUCT_DETAIL: 상품 상세 정보 저장
3. 정리
- 기본기가 탄탄하면 어떤 기술이 나와도 빠르게 적응할 수 있다.
- 대부분의 비즈니스 문제는 관계형 모델로 충분히 해결할 수 있다.