Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

네트워크 모델(Network Model)의 개념, 특징과 장단점 총정리

네트워크 모델이란?

네트워크 모델(Network Model)은 계층형 모델을 확장한 데이터베이스 구조입니다. 트리 형태의 구조에서 여러 부모 노드를 가질 수 있도록 허용하기 때문에, 계층형 모델로는 표현하기 어려운 다대다(N:M) 관계를 효과적으로 관리할 수 있습니다.

네트워크 모델의 두 가지 핵심 개념은 다음과 같습니다.

  • 레코드(Record): 계층적으로 조직화해야 하는 필드들을 포함합니다.
  • 셋(Set): 하나의 소유자(owner)와 다수의 멤버(member)로 구성되는 일대다(1:N) 관계를 레코드 간에 정의하는 데 사용됩니다.

하나의 레코드는 여러 셋에서 소유자 역할을 할 수 있으며, 동시에 다른 여러 셋에서 멤버 역할도 수행할 수 있습니다.

참고: 여기서 말하는 '셋(Set)'은 수학적 집합과는 전혀 다른 개념이므로 혼동해서는 안 됩니다.

셋(Set)의 구조

셋은 환형 연결 리스트(circular linked list)를 이용해 설계됩니다. 각 원(cycle) 안에는 하나의 레코드 타입인 소유자, 즉 부모(parent)가 한 번만 나타나고, 다른 레코드 타입인 종속자(subordinate) 또는 자식(child)은 각 원 안에 여러 번 나타날 수 있습니다.

두 레코드 타입 사이에는 계층 관계가 성립합니다. 예를 들어 A 타입이 B 타입의 소유자일 때, 동시에 B가 소유자이고 A가 멤버인 또 다른 셋을 만들 수도 있습니다. 이 모델에서 소유 관계는 방향(direction)으로 정의되므로, 모든 셋은 하나의 방향성 그래프(directed graph)를 이룹니다. 레코드 접근은 환형 연결 리스트의 인덱싱 구조를 통해 이루어집니다.

네트워크 모델의 주요 특징

  • 계층형 모델보다 데이터 중복(redundancy)을 더 효율적으로 표현할 수 있습니다.
  • 선행 노드에서 후속 노드로 가는 경로가 두 개 이상 존재할 수 있습니다.
  • 모델의 연산은 연결 리스트(환형)의 인덱싱 구조로 유지되며, 프로그램은 현재 위치(current position)를 유지한 채 레코드가 참여하는 관계를 따라가며 레코드에서 레코드로 이동합니다.
  • 키(key) 값을 제공하여 레코드를 직접 찾아낼 수도 있습니다.

네트워크 모델 예시

다음 다이어그램은 네트워크 모델을 보여줍니다. 에이전트(agent)는 여러 고객(client)을 대표하고 여러 엔터테이너(entertainer)를 관리합니다. 각 고객은 원하는 만큼 공연 계약(engagement)을 예약하고 에이전트에게 서비스 요금을 지급합니다. 각 엔터테이너는 여러 공연에 출연하며 다양한 음악 스타일을 선보일 수 있습니다.

네트워크 모델(Network Model)의 개념, 특징과 장단점 총정리

레코드의 집합은 노드(node)로 표현되며, 셋 구조는 네트워크 내에서 관계를 설정하는 데 활용됩니다. 셋 구조는 한 노드를 소유자로, 다른 노드를 멤버로 사용하여 노드 쌍을 서로 연결합니다. 일대다 관계는 셋 구조로 관리되는데, 이는 소유자 노드의 하나의 레코드가 멤버 노드의 하나 이상의 레코드와 연관될 수 있지만, 멤버 노드의 단일 레코드는 오직 하나의 소유자 노드 레코드와만 연관된다는 의미입니다.

또한 멤버 노드의 레코드는 소유자 노드의 기존 레코드와 연관되지 않으면 존재할 수 없습니다. 예를 들어, 고객은 반드시 에이전트에게 배정되어야 하지만, 고객이 없는 에이전트라도 데이터베이스에는 등록될 수 있습니다.

네트워크 모델(Network Model)의 개념, 특징과 장단점 총정리

위 다이어그램은 기본적인 셋 구조를 나타냅니다. 특정 노드 쌍 사이에 하나 이상의 셋(연결)을 정의할 수 있으며, 하나의 노드는 데이터베이스 내 다른 노드들과의 또 다른 셋에도 동시에 참여할 수 있습니다.

데이터 접근 방식

적절한 셋 구조를 활용하면 네트워크 모델 내부의 데이터에 손쉽게 접근할 수 있습니다. 루트(root) 노드 선택에 제약이 없기 때문에 어떤 노드에서든 데이터에 접근할 수 있고, 관련 셋을 따라 앞뒤 양방향으로 자유롭게 탐색할 수 있습니다.

예를 들어, 사용자가 특정 공연 계약을 성사시킨 에이전트를 찾고 싶다고 가정해 보겠습니다. 먼저 ENGAGEMENTS 노드에서 해당 공연 계약 레코드를 찾고, Schedule 셋 구조를 통해 그 계약 레코드를 '소유'하는 고객을 확인합니다. 마지막으로 Represent 셋 구조를 통해 해당 고객 레코드를 '소유'하는 에이전트를 식별하면 됩니다.

장점

  • 데이터 접근 속도가 빠릅니다.
  • 계층형 데이터베이스보다 더 복잡한 질의(query) 작성이 가능하므로, 다양한 질의를 이 모델 위에서 실행할 수 있습니다.

단점

  • 셋 구조를 통해 데이터를 탐색하려면 사용자가 데이터베이스 구조에 매우 익숙해야 합니다.
  • 데이터베이스 내 갱신(update) 작업이 번거롭습니다. 셋 구조를 변경하면 해당 구조를 사용해 데이터를 탐색하는 응용 프로그램에 영향을 미치기 때문에, 셋 구조를 수정할 경우 응용 프로그램 내부의 해당 구조에 대한 모든 참조도 함께 수정해야 합니다.