본문 바로가기

Dev.../소프트웨어 아키텍처

[SA강좌] Part 4-21 Single Table Inheritance 패턴

단일 테이블 상속 패턴의 정의

단일 테이블 상속 패턴은 클래스들의 상속도을 다양한 클래스들의 모든 필드를 위한 컬럼을 가진 단일 테이블로 표현하는 것이다.

그림 -28. 단일 테이블 상속 패턴의 구조

단일 테이블 상속 패턴의 설명

관계형 데이터베이스는 다중 상속을 지원하지 않는다. 이러한 이유로 개체들을 데이터베이스에 매핑할 때 상속 구조를 관계의 테이블로 어떻게 표현할지를 고려해야한다. 관계형 테이터베이스에 매핑할 때, 다중 테이블에 있는 상속 구조를 처리할 때 최소의 조인을 할 수 있게 해야한다. 단일 테이블 상속 패턴은 상속 구조의 모든 클래스들의 모든 필드을 단일 테이블에 매핑한다.

단일 테이블 상속 패턴은 언제 사용하는가?

단일 테이블 상속은 상속구조를 관계형 데이터베이스에 있는 필드들의 매핑을 위한 선택 중에 하나이다. 이러한 매핑 패턴의 대안은 클래스 테이블 상속과 컨크리트 테이블 상속이 있다.

단일 테이블 상속의 장점은 다음과 같다.

  • 데이터베이스에 대한 고민은 단지 단일 테이블만 있다.
  • 추출되는 데이터에 대한 조인은 없다.

상속에 대한 필드의 추가 및 삭제은 데이터베이스에 대한 변경을 요청하지 않는다.

단일 테이블 상속의 단점

직접적으로 테이블을 이용하는 사람들에게 때때로 관련과 비관련 필드에 대하여 혼란을 준다.

몇몇 서브 클래스에 의해 사용되는 컬럼들은 데이터베이스에 대한 공간의 활용을 저하한다