Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL

계층적 데이터베이스 모델


계층적 모델은 각 레코드에 대해 단일 부모가 있는 트리와 같은 구조의 데이터를 나타냅니다. 순서를 유지하기 위해 형제 노드를 기록된 방식으로 유지하는 정렬 필드가 있습니다. 이러한 유형의 모델은 기본적으로 IBM의 IMS(정보 관리 시스템)와 같은 초기 메인프레임 데이터베이스 관리 시스템을 위해 설계되었습니다.

이 모델 구조는 두 가지/다양한 유형의 데이터 간의 일대일 및 일대다 관계를 허용합니다. 이 구조는 현실 세계의 많은 관계를 설명하는 데 매우 유용합니다. 목차, 모든 중첩 및 정렬 정보.

계층 구조는 저장소에 있는 레코드의 물리적 순서로 사용됩니다. 순차 액세스와 결합된 포인터를 사용하여 데이터 구조를 아래로 탐색하여 레코드에 액세스할 수 있습니다. 따라서 각 레코드에 대해 전체 경로가 포함되지 않은 경우 계층 구조는 특정 데이터베이스 작업에 적합하지 않습니다.

이 유형의 데이터베이스에 있는 데이터는 계층적으로 구조화되어 있으며 일반적으로 역 트리로 개발됩니다. 구조의 "루트"는 데이터베이스의 단일 테이블이고 다른 테이블은 루트에서 흐르는 분기 역할을 합니다. 아래 다이어그램은 일반적인 계층적 데이터베이스 구조를 보여줍니다.

계층적 데이터베이스 모델

상담원 데이터베이스

위 다이어그램에서 에이전트는 여러 연예인을 예약하고 각 연예인은 그에 대한 대가로 자신의 일정이 있습니다. 엔터테인먼트 요구 사항을 충족해야 하는 여러 고객을 유지하는 것은 에이전트의 의무입니다. 클라이언트는 에이전트를 통해 계약을 예약하고 에이전트에게 서비스 비용을 지불합니다.

이 데이터베이스 모델의 관계는 부모/자식이라는 용어로 표현됩니다. 이 유형의 관계에서는 부모 테이블을 하나 이상의 자식 테이블과 연결할 수 있지만 단일 자식 테이블은 하나의 부모 테이블에만 연결할 수 있습니다. 테이블은 포인터/인덱스를 통해 또는 테이블 내 레코드의 물리적 배열을 통해 명시적으로 연결됩니다.

사용자는 루트 테이블에서 시작하여 트리를 통해 대상 데이터로 이동하여 데이터에 액세스할 수 있습니다. 사용자가 복잡하지 않고 데이터에 액세스하려면 데이터베이스의 구조에 익숙해야 합니다.

장점

  • 테이블 구조 사이에 명시적 링크가 있기 때문에 사용자는 데이터를 매우 빠르게 검색할 수 있습니다.
  • 참조 무결성은 자식 테이블의 레코드가 부모 테이블의 기존 레코드에 연결되어야 하기 때문에 기본 제공되고 자동으로 시행되며, 부모 테이블에서 레코드가 삭제되면 모든 관련 문제가 발생합니다. 자식 테이블의 레코드도 삭제할 수 있습니다.

단점

  • 사용자가 현재 상위 테이블의 레코드와 관련이 없는 하위 테이블에 레코드를 저장해야 하는 경우 기록이 어려워지고 사용자는 상위 테이블에 추가 항목을 기록해야 합니다.
  • 이러한 유형의 데이터베이스는 복잡한 관계를 지원할 수 없고 중복성 문제도 있어 여러 사이트에서 데이터가 일관되지 않게 기록되어 부정확한 정보가 생성될 수 있습니다.

이전 다이어그램에 표시된 데이터베이스 다이어그램을 사용하는 예를 고려하십시오. 하위 테이블(Entertainers)의 레코드가 상위 테이블(Agents)의 레코드와 관련되어야 하기 때문에 사용자는 엔터테이너가 Agents 테이블의 특정 에이전트에 할당될 때까지 Entertainers 테이블에 엔터테이너에 대한 새 레코드를 입력할 수 없습니다. . 따라서 이러한 유형의 데이터베이스는 중복 데이터 문제가 있습니다. 예를 들어, 클라이언트와 연예인 사이에 다대다 관계가 있는 경우; 연예인은 많은 고객을 위해 공연할 것이고 고객은 많은 연예인을 고용할 것입니다. 계층적 데이터베이스에서 이러한 유형의 관계는 쉽게 모델링할 수 없으므로 개발자는 일정 및 참여 테이블 모두에 중복 데이터를 도입해야 합니다.

  • 스케줄 테이블에는 이제 클라이언트 이름, 주소 및 전화번호와 같은 정보가 포함된 클라이언트 데이터가 포함되어 각 연예인이 누구를 위해 어디에서 공연하는지 보여줍니다. 이 데이터는 현재 클라이언트 테이블에도 저장되어 있으므로 중복됩니다.
  • 인게이지먼트 테이블에는 이제 연예인 이름, 전화번호, 연예인 유형과 같은 정보가 포함된 연예인 데이터가 포함되어 어떤 연예인이 특정 고객을 위해 공연하고 있는지 나타냅니다. 이 데이터는 현재 Entertainers 테이블에 저장되어 있기 때문에 중복됩니다.

이 중복성의 문제는 사용자가 단일 데이터 조각을 일관성 없이 입력할 수 있는 가능성을 열어주기 때문에 부정확한 정보를 생성할 수 있다는 것입니다.

이 문제는 연예인 전용 계층 데이터베이스와 에이전트 전용 계층 데이터베이스를 각각 작성하여 해결할 수 있습니다. 엔터테이너 데이터베이스에는 엔터테이너 테이블에 기록된 데이터만 포함되고 수정된 에이전트 데이터베이스에는 에이전트, 클라이언트, 지불 및 참여 테이블에 기록된 데이터가 포함됩니다. Agents 데이터베이스의 Engagements 테이블과 Entertainers 데이터베이스의 Entertainers 테이블 사이에 논리적 하위 관계를 정의할 수 있으므로 필요하지 않습니다. 이 관계를 설정하면 지정된 클라이언트의 예약된 연예인 목록 또는 지정된 연예인의 공연 일정과 같은 다양한 정보를 검색할 수 있습니다. 아래 다이어그램은 전체 그림을 설명합니다.

계층적 데이터베이스 모델

계층적 데이터베이스는 1970년대 메인프레임에서 사용된 테이프 스토리지 시스템에 적합했으며 이러한 시스템을 기반으로 데이터베이스가 구축된 조직에서 매우 인기가 있었습니다. 그러나 계층적 데이터베이스가 데이터에 대한 빠르고 직접적인 액세스를 제공하고 여러 상황에서 유용했음에도 불구하고 증가하는 데이터 중복성 및 데이터 간의 복잡한 관계 문제를 해결하려면 새로운 데이터베이스 모델이 필요하다는 것이 분명했습니다.

이 데이터베이스 모델의 이면에 있는 아이디어는 특정 유형의 데이터 저장에 유용하지만 매우 다용도가 아니며 일부 특정 용도로 제한됩니다.

예를 들어, 회사의 각 개인이 특정 부서에 보고할 수 있는 경우 해당 부서를 상위 레코드로 사용할 수 있으며 개별 직원은 보조 레코드를 나타내며 각 레코드는 해당 부서로 다시 연결됩니다. 계층 구조의 상위 레코드입니다.