계층형 모델

계층형 데이터베이스 모델(Hierarchical database model)이란 데이터가 트리 형태의 구조로 조직된 것을 말한다. 이 구조는 반복적인 부모-자식 관계 정보를 표현한다. 각 부모는 다수의 자식을 가질 수 있고, 자식은 단 하나만의 부모를 가질 수 있다. 어떤 레코드에 관한 모든 애트리뷰트()는 엔티티 타입() 하나 내에 나열된다.

이 모델에 대한 데이터베이스 구현에서는 하나의 엔티티 타입은 하나의 테이블에 해당한다. 각각의 레코드는 행으로 표현되며, 애트리뷰트()는 열로 표현된다. 엔티티 타입은 엔티티 타입끼리 서로 1:N 매핑된다. 이 방식은 일-대-다 관계로도 불리는 방식으로 불리기도 한다.

예를 들어, 계층형 데이터베이스 모델의 한 예는 회사의 직원 목록을 "직원"이라는 이름의 테이블() (엔티티 타입)에 저장한 것이다. 이 테이블 안에는 성명, 직위, 봉급 같은 속성(열)이 있을 수 있다. 또한 각 직원의 자녀에 대한 자료도 성명, 생년월일 등의 속성을 갖는 "자녀"라는 이름의 별도의 테이블에 둘 수 있다. "직원" 테이블은 부모 세그먼트를 표현하며, "자녀" 테이블은 자녀 세그먼트를 표현한다. 이 두 세그먼트는 “계층”을 하나 형성한다: 각각의 직원은 다수의 자녀를 가질 수 있지만, 각각의 자녀는 한 명의 직원을 부모로서 가진다.
(단, 한 회사 안에 부부, 혹은 부모-자녀가 동시에 재직하고 있지 않다고 가정한다.)

계층형 구조는 초창기 메인프레임 컴퓨터 데이터베이스 매니지먼트 시스템에 널리쓰였다. 여러 타입의 데이터 사이의 계층형 관계를 이용할 경우, 어떤 문제는 매우 쉽게 답할 수 있지만, 어떤 문제는 매우 답하기 어려워진다. 일-대-다의 관계가 무너졌을 경우(예를 들어 학생이 한 명 이상의 담임 선생님을 가질 경우), 계층형 관계는 네트워크 모델이 되어버린다.

오늘날 가장 널리 쓰이는 계층형 모델은 LDAP 모델이다. 이외에는 계층형 모델은 오늘날의 데이터베이스들에서 거의 쓰이지 않고 있다. 그러나, 정보를 기록하는 다른 매체 및 기법들, 예를 들어 XML 문서라든지, 파일 시스템이라든지, 윈도우 레지스트리 등에서는 쓰이고 있다.

관계형 모델 중 트리 자료 구조 
관계형 데이터베이스 모델 중 계층형 자료의 예는 다음과 같다. 다음은 어떤 회사 조직 내에서 누가 누구에게 보고할 책임이 있는가 하는 데이터이다.

다음 테이블을 보자

"직원번호" 20이 10에 보고하고, 30이 20에게 보고하고, 40이 20에게 보고한다는 내용의 "계층"은 다음과 같은 테이블에 표현된다.

위 테이블에서 만약 한 직원이 두 명의 상사에게 보고를 하는 관계가 아니라면 이 계층은 '자식 하나마다 오직 하나의 부모를 갖는' 타입이 된다.

각주

잘 알려진 계층형 DBMS 
 Adabas
 GT.M
 IMS
 MUMPS
 Caché (소프트웨어)
 Metakit
 Multidimensional hierarchical toolkit
 Mumps compiler
 DMSII
 FOCUS

외부 링크 
 계층
 계층적 데이터를 관계형 데이터베이스에서 관리하는 법
 멈프스 컴파일러
 C++ 계층 툴킷

데이터베이스 관리 시스템
데이터베이스
데이터 모델링
데이터베이스 모델