# 스키마 정의

## Content

스키마는 테이블이 데이터를 해석하고 관리하는 방식을 정의합니다.
데이터 매니저에서 테이블이 생성될 때 스키마는 다음을 설명합니다.

* 원시 데이터가 구문 분석되는 방식
* 필드가 구조화되고 형식화되는 방식
* 계산 값이 정의되는 방식
* 테이블에 재사용 가능한 window 정의가 있는지 여부
* 테이블이 계층 구조인지 여부

스키마는 테이블에 속하며 해당 테이블의 구조적 동작을 결정합니다.

## 스키마가 없을 때 발생하는 동작

스키마가 제공되지 않으면:

* 데이터는 기본 구문 분석 규칙을 사용하여 로드됩니다.
* 필드는 원시 데이터에서 직접 추론됩니다.
* 구조 제약 조건이나 계산 열이 적용되지 않습니다.
* 계층 구조 또는 재사용 가능한 window 정의를 사용할 수 없습니다.

스키마를 제공하면 구조와 동작을 명시적으로 제어할 수 있습니다.

## 스키마 구조

스키마는 테이블 옵션 내부에 정의됩니다.

```javascript
dataManager.addTable("orders", {
    data: [...],
    schema: {
        // schema configuration
    }
});
```

스키마에는 다음과 같은 주요 섹션이 포함될 수 있습니다.

```typescript
interface ISchemaOption {
    type?: string;               // parsing type
    dataPath?: string;           // nested data path
    columns?: {...};             // column definitions
    window?: {...};              // reusable window definitions
    hierarchy?: {...};           // hierarchical structure
}
```

각 섹션은 테이블 구조의 특정 측면을 제어합니다.

## 데이터 구문 분석

구문 분석 구성은 원시 데이터가 해석되는 방식을 결정합니다.
다음 항목을 제어합니다.

* 데이터 원본 형식(예: JSON 또는 CSV)
* 중첩 데이터 추출
* 필드 정규화 규칙

자세한 내용은 [데이터 구문 분석](/spreadjs/docs/v19/features/data-manager/defining-schema/data-parsing) 을 참고하세요.

## 열 정의

열은 개별 필드가 테이블 내부에서 동작하는 방식을 정의합니다.
다음 항목을 제어합니다.

* 필드 매핑 및 식별
* 데이터 형식
* 유효성 검사 규칙
* 계산 값
* 표시 메타데이터

자세한 구성은 [열 정의](/spreadjs/docs/v19/features/tablesheet/tablesheet-relationships/define-columns) 를 참고하세요.

## Window 정의

Window 정의는 `WINDOW()` 수식에 대한 재사용 가능한 window 사양을 제공합니다.
다음 역할을 수행합니다.

* 분할, 정렬 및 프레임 규칙 정의
* 재사용성 및 일관성 향상
* 수식 계산에만 영향

자세한 내용은 [Window 정의](/spreadjs/docs/v19/features/data-manager/defining-schema/window-definition) 를 참고하세요.

## 계층 구조 구성

계층 구조 구성은 단일 테이블 내의 레코드를 부모-자식 구조로 구성합니다.
다음 항목을 정의합니다.

* 부모 관계를 도출하는 방식
* 중첩 구조를 해석하는 방식
* 선택적 요약 필드 동작

자세한 내용은 [계층 구조 데이터](/spreadjs/docs/v19/features/data-manager/defining-schema/hierarchical-data) 를 참고하세요.

## 책임 범위

스키마는 데이터 매니저 내부의 구조적 동작을 정의합니다.
스키마는:

* 원격 통신을 제어하지 않습니다.
* UI를 렌더링하지 않습니다.
* 테이블 간 관계를 정의하지 않습니다.
* CRUD 작업을 실행하지 않습니다.

이러한 책임은 시스템의 다른 부분에 속합니다.
스키마는 테이블이 자체 데이터를 이해하고 구성하는 방식에만 집중합니다.