[강의정리] 김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴

Posted by , September 05, 2026
인프런DB

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_BOOK
      • PRODUCT_ALBUM
      • PRODUCT_MOVIE
  • 단일 테이블 전략 ⭐

    • 부모와 자식의 모든 속성을 하나의 테이블에 통합하는 방식
    • 장점
      • 테이블 구조가 단순함
      • JOIN 없이 데이터를 조회할 수 있어 조회가 편리함
    • 단점
      • 특정 서브타입에서 사용하지 않는 컬럼이 NULL로 저장될 수 있음
    • 특징
      • 서브타입별 속성이 많지 않고 구조가 단순한 경우 적합
    • 예시
      • PRODUCT 하나의 테이블에 상품 공통 정보와 상세 정보를 함께 저장
  • 조인 전략 ⭐⭐⭐

    • 부모와 자식을 각각의 테이블로 분리하고 PK/FK 관계로 연결하는 방식
    • 장점
      • 데이터 중복을 줄일 수 있음
      • 정규화된 구조로 유연한 확장이 가능함
      • 서브타입별 속성을 명확하게 분리할 수 있음
    • 단점
      • 조회 시 JOIN이 필요하여 SQL이 복잡해질 수 있음
      • 여러 테이블을 JOIN하는 경우 조회 비용이 발생할 수 있음
    • 특징
      • 정규화된 관계형 데이터베이스 설계에 적합한 일반적인 방식
    • 예시
      • PRODUCT : 상품 공통 정보 저장
      • PRODUCT_DETAIL : 상품 상세 정보 저장

3. 정리

  • 기본기가 탄탄하면 어떤 기술이 나와도 빠르게 적응할 수 있다.
  • 대부분의 비즈니스 문제는 관계형 모델로 충분히 해결할 수 있다.

참조