데이터베이스 매핑 database-mapping

이 페이지에서에 설명된 샘플 스키마의 SQL 매핑은 다음 XML 문서를 생성합니다.

<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
  <enumeration basetype="byte" name="gender">
    <value label="Not specified" name="unknown" value="0"/>
    <value label="Male" name="male" value="1"/>
    <value label="Female" name="female" value="2"/>
  </enumeration>

  <element name="recipient" sqltable="CusRecipient">
    <attribute desc="Recipient email address" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
    <attribute default="GetDate()" label="Date of creation" name="created" sqlname="tsCreated" type="datetime"/>
    <attribute enum="gender" label="Gender" name="gender" sqlname="iGender" type="byte"/>
    <element label="Location" name="location">
      <attribute label="City" length="50" name="city" sqlname="sCity" type="string" userEnum="city"/>
    </element>
  </element>
</schema>

스키마의 루트 요소가 <srcschema>(으)로 <schema>(으)로 변경되었습니다.

다른 유형의 문서는 소스 스키마에서 자동으로 생성되며 스키마라고 합니다.

SQL 이름은 요소 이름과 유형에 따라 자동으로 결정됩니다.

SQL 이름 지정 규칙은 다음과 같습니다.

  • 테이블: 스키마 네임스페이스와 이름의 연결

    이 예제에서 테이블 이름은 sqltable 특성에 있는 스키마의 main 요소를 통해 입력됩니다.

    code language-sql
    <element name="recipient" sqltable="CusRecipient">
    
  • 필드: 유형에 따라 정의된 접두사가 앞에 오는 요소의 이름: 정수는 'i', 복수는 'd', 문자열은 's', 날짜는 'ts' 등.

    입력한 각 <attribute><element> ​에 대해 sqlname 특성을 통해 필드 이름을 입력합니다.

    code language-sql
    <attribute desc="Email address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
    
NOTE
소스 스키마에서 SQL 이름을 오버로드할 수 있습니다. 이렇게 하려면 관련 요소에서 "sqltable" 또는 "sqlname" 특성을 채웁니다.

확장 스키마에서 생성된 테이블을 생성하는 SQL 스크립트는 다음과 같습니다.

CREATE TABLE CusRecipient(
  iGender NUMERIC(3) NOT NULL Default 0,
  sCity VARCHAR(50),
  sEmail VARCHAR(80),
  tsCreated TIMESTAMP Default NULL);

SQL 필드 제약 조건은 다음과 같습니다.

  • 숫자 및 날짜 필드에 null 값이 없음
  • 숫자 필드는 0으로 초기화됩니다.

XML 필드 xml-fields

기본적으로 모든 <attribute><element> 형식의 요소는 데이터 스키마 테이블의 SQL 필드에 매핑됩니다. 그러나 SQL 대신 XML로 이 필드를 참조할 수 있습니다. 즉, 모든 XML 필드의 값이 들어 있는 테이블의 메모 필드("mData")에 데이터가 저장됩니다. 이러한 데이터의 저장소는 스키마 구조를 관찰하는 XML 문서입니다.

XML의 필드를 채우려면 값이 "true"인 xml 특성을 관련 요소에 추가해야 합니다.

: 다음은 XML 필드 사용의 두 가지 예입니다.

  • 여러 줄 주석 필드:

    code language-sql
    <element name="comment" xml="true" type="memo" label="Comment"/>
    
  • HTML 형식의 데이터 설명:

    code language-sql
    <element name="description" xml="true" type="html" label="Description"/>
    

    html 유형을 사용하면 HTML 콘텐츠를 CDATA 태그에 저장하고 Adobe Campaign 클라이언트 인터페이스에 특수 HTML 편집 검사를 표시할 수 있습니다.

데이터베이스의 실제 구조를 수정하지 않고 새 필드를 추가하려면 XML 필드를 사용합니다. 또 다른 장점은 리소스(SQL 필드에 할당된 크기, 테이블당 필드 수 제한 등)를 적게 사용한다는 것입니다. 그러나 XML 필드는 인덱싱하거나 필터링할 수 없습니다.

인덱싱된 필드 indexed-fields

인덱스를 사용하면 애플리케이션에서 사용되는 SQL 쿼리의 성능을 최적화할 수 있습니다.

인덱스는 데이터 스키마의 기본 요소에서 선언됩니다.

<dbindex name="name_of_index" unique="true/false">
  <keyfield xpath="xpath_of_field1"/>
  <keyfield xpath="xpath_of_field2"/>
  ...
</key>

색인은 다음 규칙을 따릅니다.

  • 인덱스는 테이블에서 하나 이상의 필드를 참조할 수 있습니다
  • unique 특성에 "true" 값이 포함된 경우 인덱스가 모든 필드에서 고유할 수 있습니다(중복 방지).
  • 인덱스의 SQL 이름은 테이블의 SQL 이름과 인덱스의 이름에서 결정됩니다
NOTE
  • 표준으로 색인은 스키마의 기본 요소에서 선언된 첫 번째 요소입니다.

  • 인덱스는 테이블 매핑(표준 또는 FDA) 중에 자동으로 만들어집니다.

:

  • 이메일 주소 및 구/군/시에 색인 추가:

    code language-sql
    <srcSchema name="recipient" namespace="cus">
      <element name="recipient">
        <dbindex name="email">
          <keyfield xpath="@email"/>
          <keyfield xpath="location/@city"/>
        </dbindex>
    
        <attribute name="email" type="string" length="80" label="Email" desc="Email address of recipient"/>
        <element name="location" label="Location">
          <attribute name="city" type="string" length="50" label="City" userEnum="city"/>
        </element>
      </element>
    </srcSchema>
    
  • "id" 이름 필드에 고유 인덱스 추가:

    code language-sql
    <srcSchema name="recipient" namespace="cus">
      <element name="recipient">
        <dbindex name="id" unique="true">
          <keyfield xpath="@id"/>
        </dbindex>
    
        <dbindex name="email">
          <keyfield xpath="@email"/>
        </dbindex>
    
        <attribute name="id" type="long" label="Identifier"/>
        <attribute name="email" type="string" length="80" label="Email" desc="Email address of recipient"/>
      </element>
    </srcSchema>
    

자세히 알아보기

자세한 내용은 다음 링크를 참조하십시오.

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1