[]
테이블 스키마의 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 속성에 따라 달라집니다.
레코드는 다음을 모두 포함합니다.
기본 키 필드
부모 참조 필드
예제 데이터:
[
{ 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) 표시 필드
레코드 순서
예제:
[
{ name: "USA", level: -1 },
{ name: "Texas", level: 0 },
{ name: "Houston", level: 1 }
]구성:
hierarchy: {
type: "Level",
column: "level"
}level 값은 인접 레코드와의 관계를 기준으로 각 레코드의 깊이를 결정합니다.
기본 키는 선택 사항이지만 권장됩니다.
레코드는 중첩된 자식 컬렉션을 포함합니다.
예제:
[
{
name: "USA",
children: [
{ name: "Texas" }
]
}
]구성:
hierarchy: {
type: "ChildrenPath",
column: "children"
}column은 자식 레코드를 포함하는 속성을 지정합니다.
계층 구조는 사용자 지정 구문 분석 규칙으로부터 도출됩니다.
예제:
[
{ 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 동작이 서로 분리된 상태로 유지됩니다.