다음을 통해 공유


GDL 스키마

GDL 파서에서는 데이터 기반 스키마를 만들고 구현할 수 있습니다. 스키마가 제공되면 파서는 스키마의 유효성을 검사하고 데이터를 변환합니다.

스키마는 연결된 GDL 원본 파일에서 데이터의 구조와 형식을 설명합니다. 스키마는 GDL 원본 데이터 파일 자체 내에서 정의하거나 GDL 원본 데이터 파일이 참조하는 별도의 파일일 수 있습니다. 스키마는 각 구문 내에 나타날 수 있는 데이터 항목과 각 특성을 정의할 수 있는 횟수를 정의합니다. 예를 들어 사람을 설명하는 구문을 정의할 수 있습니다. 구문에 사람의 이름, 생년월일, 높이, 체중, 집 주소 및 일부 고용 정보가 포함되도록 할 수 있습니다.

GDL 데이터는 다음 코드 예제와 유사할 수 있습니다.

*Person: person_ID
{
  *Name:
  *Birthdate:
  *Height:
  *Weight:
  *HomeAddress:
  *EmploymentInfo:
} 

*HomeAddress 및 *EmploymentInfo는 정보의 논리적 그룹화이므로 다음 코드 예제와 같이 구문으로 정의할 수도 있습니다.

*HomeAddress:
{
  *StreetAddress:
  *Apt_Number:
  *City:
  *State:
  *Zip:
}

*EmploymentInfo:
{
  *Employer:
  *Address:
  *Position:
  *Salary:
  *StartDate:
}

이전 예제에 표시된 것과 같은 GDL 구문은 해당 구조 및 콘텐츠에 대한 구문 규칙을 정의하지 않습니다. 예를 들어 *Person 구문에는 *Weight(킬로그램)를 지정하는 인스턴스와 *Weight(파운드)를 지정하는 인스턴스가 두 개 있을 수 있습니다. 이러한 여러 인스턴스는 불일치를 일으킬 수 있습니다.

GDL 스키마는 들어오는 데이터가 준수해야 하는 구조와 콘텐츠를 공식적으로 지정하는 메서드를 제공합니다. 파서는 이 스키마에 대해 데이터의 유효성을 검사하고 데이터 또는 데이터 구조가 스키마를 준수하지 않는지 경고합니다. 항목이 필요한지 선택 사항인지(예: Apt) 또는 항목을 곱할 수 있는지 여부를 지정할 수 있습니다. 예를 들어 *Apt_Number 선택 사항일 수 있으며 한 사람이 두 개의 작업을 보유할 수 있습니다.

스키마를 사용하면 항목의 정의를 공유하고 상속할 수 있습니다. 예를 들어 *EmploymentInfo의 *Address에 대한 스키마 정의는 *HomeAddress에서 공유할 수 있습니다. 스키마를 사용하면 기존 정의에서 새 정의를 파생할 수 있습니다. 두 Address 구문은 공통 상속된 정의에서 파생된 변형일 수 있으므로 동일할 필요가 없습니다.

스키마를 사용하여 지정된 특성 값의 형식을 지정할 수 있습니다. 예를 들어 스키마는 날짜 값을 MM-DD-YYYY 형식으로 지정해야 할 수 있습니다. 파서가 복합 값 식을 구성 요소로 분해하고 스냅샷 표시할 수도 있습니다. 예를 들어 다음 코드 예제와 같이 클라이언트 애플리케이션에서 날짜를 세 개의 별도 필드로 분해할 수 있습니다.

*Date:
{
  *Month: Jan
  *Day: 1
  *Year: 2001
}

상속을 지원하는 스키마의 기능에는 추가적인 영향이 있습니다. 상속을 사용하면 자연스럽게 호환성을 유지하면서 스키마를 확장할 수 있습니다. 다른 스키마에서 파생된 스키마가 있는 경우 파생된 스키마를 준수하는 데이터 파일도 원래 스키마를 자동으로 준수합니다. 이 상속을 통해 공급업체는 master 스키마(및 master 스키마를 준수해야 하는 모든 애플리케이션)와의 호환성을 유지하면서 스키마를 사용자 지정할 수 있습니다(및 데이터 파일을 암시). 실제로 공급업체는 master 스키마를 정의하는 파일만 참조하고 master 스키마의 정의에서 상속되는 새 정의를 만들어야 합니다. 공급업체는 master 스키마의 프라이빗 복사본을 만들거나 어떤 식으로든 master 스키마를 수정할 필요가 없습니다. 이 경우 master 스키마가 나중에 수정될 경우 공급업체가 조치를 취할 필요가 없습니다.

앞의 예제에서 볼 수 있듯이 상속을 사용하면 일반적인 패턴을 고려하고 불필요한 정의 중복 및 그에 수반되는 유지 관리를 방지할 수 있습니다. 결과적으로 스키마와 스키마가 나타내는 데이터 집합은 잘 생각되고 논리적으로 구조화될 수 있습니다.

상속 기반 스키마를 사용하는 방법에 대한 자세한 내용은 GDL 템플릿을 참조하세요.