[]
        
(Showing Draft Content)

계층 구조 데이터

테이블 스키마의 hierarchy 속성은 단일 테이블 내에서 계층 구조(트리 구조) 데이터 모델링을 활성화합니다.

계층 구조가 구성되면:

  • 레코드는 부모-자식 관계로 구성됩니다.

  • 테이블은 평면 목록이 아닌 트리로 해석됩니다.

  • 계층 구조는 레코드 데이터로부터 도출됩니다.

  • 저장된 데이터는 복제되거나 변환되지 않습니다.

계층 구조는 스키마 수준의 구조 구성입니다.

이는 테이블 간 관계를 생성하지 않습니다.

기본 구조

계층 구조는 테이블 스키마에서 정의됩니다.

interface ISchemaOption {
    hierarchy?: IHierarchyOption;
}
interface IHierarchyOption {
    type: 'Parent' | 'ChildrenPath' | 'Level' | 'Custom';
    column: string;
    outlineColumn?: string | IHierarchyOutlineColumnOptions;
    summaryFields?: { [field: string]: string };
    parse?: (options) => any;
    unparse?: (options) => any;
}

이 구성은 레코드 필드로부터 부모-자식 관계를 어떻게 도출할지를 지정합니다.

지원되는 계층 구조 형식

계층 구조 동작은 type 속성에 따라 달라집니다.

Parent 형식

레코드는 다음을 모두 포함합니다.

  • 기본 키 필드

  • 부모 참조 필드

예제 데이터:

[
  { id: 1, parentId: -1 },
  { id: 2, parentId: -1 },
  { id: 3, parentId: 1 }
]

구성:

schema: {
    hierarchy: {
        type: "Parent",
        column: "parentId"
    },
    columns: {
        id: { isPrimaryKey: true },
        parentId: {}
    }
}

column은 부모 레코드를 참조하는 필드를 식별합니다.

노드를 고유하게 식별하기 위해 기본 키가 필요합니다.

Level 형식

계층 구조는 다음에 의해 결정됩니다.

  • 수준(level) 표시 필드

  • 레코드 순서

예제:

[
  { name: "USA", level: -1 },
  { name: "Texas", level: 0 },
  { name: "Houston", level: 1 }
]

구성:

hierarchy: {
    type: "Level",
    column: "level"
}

level 값은 인접 레코드와의 관계를 기준으로 각 레코드의 깊이를 결정합니다.

기본 키는 선택 사항이지만 권장됩니다.

ChildrenPath 형식

레코드는 중첩된 자식 컬렉션을 포함합니다.

예제:

[
  {
    name: "USA",
    children: [
      { name: "Texas" }
    ]
  }
]

구성:

hierarchy: {
    type: "ChildrenPath",
    column: "children"
}

column은 자식 레코드를 포함하는 속성을 지정합니다.

Custom 형식

계층 구조는 사용자 지정 구문 분석 규칙으로부터 도출됩니다.

예제:

[
  { id: "1" },
  { id: "1.1" },
  { id: "1.1.1" }
]

구성:

hierarchy: {
    type: "Custom",
    column: "id",
    parse: function (options) {
        const segments = options.data.id.split(".");
        return segments.slice(0, -1).join(".");
    }
}

parse 함수는 각 레코드에서 부모 키를 도출합니다.

선택적으로 unparse 함수를 정의하여 새 키 생성 방식을 지정할 수 있습니다.

요약 필드

계층 구조는 부모 레코드에 대한 요약 필드를 지원합니다.

hierarchy: {
    type: "Parent",
    column: "parentId",
    summaryFields: {
        budget: '=SUM(CHILDREN(1,"budget"))'
    }
}

요약 필드는:

  • 부모 레코드에 수식을 적용합니다.

  • 레코드에 자식이 있을 때만 계산됩니다.

  • 요약 필드의 편집 가능 동작을 재정의합니다.

이 수식들은 계산 중 평가되며 저장된 자식 값은 변경하지 않습니다.

개요 열

개요 열은 호환되는 View에서 트리 구조를 시각적으로 표시할 열을 정의합니다.

다음 위치에서 지정할 수 있습니다.

  • hierarchy.outlineColumn

  • 또는 열/View 수준

둘 다 정의된 경우:

  • View 수준 구성이 스키마 수준 설정을 재정의합니다.

계층 구조 구성 자체는 UI를 렌더링하지 않습니다.

구조 메타데이터만 제공합니다.

구조적 제약 사항

계층 구조 모델링에는 다음이 필요할 수 있습니다.

  • 기본 키(Parent 형식 및 대부분의 Custom 형식)

  • 안정적인 순서 변경을 위한 숫자 형식의 rowOrder 열(사용하는 View에서 지원하는 경우)

계층 구조는 다음을 수행하지 않습니다.

  • 테이블 간 관계 생성

  • 원격 동기화 의미 변경

  • 레코드 복제

대신 테이블 내부에서 레코드가 해석되는 방식을 재구성합니다.

책임 범위

계층 구조는 스키마 수준의 데이터 구조 구성입니다.

이는:

  • 단일 테이블 내의 부모-자식 관계를 정의합니다.

  • 계산 컨텍스트 및 구조 해석에 영향을 줍니다.

  • 계층 구조 렌더링을 지원하는 View에서 사용됩니다.

확장, 축소, 순서 변경과 같은 View별 작업은 별도 문서에서 설명합니다.

이를 통해 데이터 구조와 UI 동작이 서로 분리된 상태로 유지됩니다.