에드거 프랭클린 코드 박사의 이론인 관계형 데이터 모델을 기반한 RDBMS들이 아직도 승승장구 하고 있다. 왜냐하면, 우리가 구현하고자 하는 비즈니스를 잘 표현할 수 있고, 쉽게 구현 할 수 있기 때문이다. 관계형 데이터 모델 이전에는 데이터 모델이 과연 없었을까? 그렇지 않다. "계층형" 데이터 모델과 "망"형 데이터 모델이 있었다. 그 모델들은 아직도 쓰이고 있으나 범용성에서 뒤처지기 때문에, 데이터 모델 학습시 선택되지 않는 것으로 보인다. 이 번 글에서는 관계형 데이터 이전에 각광 받았던 모델 중 계층형 데이터 모델를 소개한다.
1. 계층형 데이터 모델 (Hierarchical Data Model)
: IBM의 IMS(Information Management System)에서 구현되어 그 당시 각광을 받았다. 계층형 데이터 모델의 특징은 데이터가 TREE 구조로 저장되는 것이다. 부모-자식 관계를 통해 계층적으로 연결된 데이터 관리를 하는 방식이다. 그래서 IMS는 트리구조의 데이터 저장을 위한 명령어와 메타데이터 제공하며, 데이터를 계층 구조로 관리 할 수 있도록 만들졌다.
2. 계층형 구조 예시
: 은행 - 지점 - 고객 - 계좌 - 거래내역 구조 예제를 보자. 부모-자식 (1:N) 관계를 형성하고 있다. 1:N 관계로 복잡하고 다양한 업무를 표현하기에는 제한적이다. 하지만, 그 당시에는 명확한 구조로 중요한 모델로 사용되었다.
은행 : 최상위 레벨 ENTITY, 여러 지점 보유
지점 : 각 지점은 특정 은행에 소속, 여러 고객을 관리
고객 : 고객은 특정 지점에 소속, 여러 계좌를 보유
계좌 : 특정 고객의 재산 관리, 여러 거래내역을 기록
거래내역 : 각 계좌에 대해 발생하는 개별 거래 기록 저장
3. 계층형 모델을 구현 방식 ( IBM IMS 방식 = 관계형 데이터 모델에서 ORACLE 과 같은 존재 )
: IMS DB의 DBD(Database Definition)를 사용해 정의서
BANK : 은행 정보를 저장하는 최상위 세그먼트
BRANCH : 은행의 각 지점 정보를 저장, 상위 세그먼트는 BANK
CUSTOMER : 고객 정보를 저장하는 세그먼트, 상위 세그먼트는 BRANCH
ACCOUNT : 고객의 계좌 정보를 저장하는 세그먼트, 상위 세그먼트는 CUSTOMER
TRANSACTION : 계좌의 거래내역 저장, 상위 세그먼트는 ACCOUNT
각 세그먼트에는 PARAENT 속성을 통해 상위 세그컨트를 지정하여, 계층 구조를 나타냄
4. DL/I 명령을 이용한 데이터 조회 ( = 관계형 데이터 모델에 SQL과 같음 )
: IMS의 DL/I(Data Language/I) 명령어를 통해 데이터를 조회 할 수 있음.
GU( Get Unique) : Bank-id 가 0001 은행 조회
GN( Get Next ) 하위 세그먼트를 차례로 탐색하는 명령어 ( 반복적 탐색 )
※ 계층 구조 탐색 : DL/I 명령을 사용할때, 부모 세그먼트를 먼저 가져온 후 하위 세그 먼트를 탐색할수 있음
계층을 벗어나거나 건너뛰어서 접근 할 수 없음.
5. 계층형 과 관계형 데이터 모델 비교
: 계층형 모델은 고정된 계층관계를 표현하는데 적합하고, 관계형 데이터 모델은 다양한 관계와 유연한 데이터 구조에 적합한 데이터베이스 모델이다.
특성 | 계층형 데이터 모델 | 관계형 데이터 모델 |
구조 | Tree (부모-자식) 구조 | 테이블(행과 열로 구성된 )구조 |
관계표현 | 계층적 부모-자식 관계 | 외래키를 통한 관계 설정, 조인으로 유연한표현 |
무결성 | 제약조건이 없어 무결성 관리 어려움 | PK,FK 등의 제약조건으로 무결성 보장 |
데이터접근방식 | 트리 순회방식, 루트 노드 부터 순차탐색 | SQL로 자유로운 데이터 접근, 다양한 검색 지원 |
확장성 및 변경용이성 | 고정된 구조로 변경이 어려움 | 유연한 구조, 확장 및 관계 변경 용이 |
'데이터 모델링 > 관계형 데이터 모델링' 카테고리의 다른 글
관계형 데이터 모델 (0) | 2024.11.11 |
---|---|
망형 데이터 모델 (2) | 2024.11.10 |
데이터 무결성과 제약조건 관계 (0) | 2024.11.08 |