XSD(XML 스키마)에서 DataSet 관계 생성

업데이트: November 2007

DataSet에서는 부모-자식 관계를 만들어 둘 이상의 열을 연관시킵니다. XSD(XML 스키마 정의 언어) 스키마에서는 다음 세 가지 방법으로 DataSet 관계를 표현합니다.

  • 중첩된 복합 형식을 지정합니다.

  • msdata:Relationship 주석을 사용합니다.

  • msdata:ConstraintOnly 주석을 사용하지 않고 xs:keyref를 지정합니다.

중첩된 복합 형식

스키마에서 중첩된 복합 형식의 정의는 요소의 부모-자식 관계를 나타냅니다. 다음 XML 스키마 조각에서는 OrderDetailOrder 요소의 자식 요소임을 보여 줍니다.

<xs:element name="Order">
  <xs:complexType>
     <xs:sequence>        
       <xs:element name="OrderDetail" />
           <xs:complexType>             
           </xs:complexType>
     </xs:sequence>
  </xs:complexType>
</xs:element>

XML 스키마 매핑 프로세스에서는 스키마의 중첩된 복합 형식에 대응하는 DataSet의 테이블을 만듭니다. 또한 생성된 테이블에 대한 부모-자식 열로 사용되는 추가 열을 만듭니다. 이러한 부모-자식 열에서는 관계를 지정하는데 이것은 기본 키/외래 키 제약 조건을 지정하는 것과는 다릅니다.

msdata:Relationship 주석

msdata:Relationship 주석을 사용하여 중첩되지 않은 스키마의 요소 간에 부모-자식 관계를 명시적으로 지정할 수 있습니다. 다음 예제에서는 Relationship 요소의 구조를 보여 줍니다.

        <msdata:Relationship name="CustOrderRelationship"  
      msdata:parent=""  
      msdata:child=""  
      msdata:parentkey=""  
      msdata:childkey="" />

msdata:Relationship 주석의 특성에서는 부모-자식 관계에 포함된 요소뿐만 아니라 이 관계에 포함된 parentkeychildkey 요소와 특성도 식별합니다. 매핑 프로세스에서는 이 정보를 사용하여 DataSet에 테이블을 생성하고 이러한 테이블 간에 기본 키/외래 키 관계를 만듭니다.

예를 들어, 다음 스키마 조각에서는 중첩되지 않은 같은 수준의 OrderOrderDetail 요소를 지정합니다. 이 스키마에서는 msdata:Relationship 주석을 지정하는데, 이 주석은 이러한 두 요소 간의 부모-자식 관계를 지정합니다. 이 경우 반드시 msdata:Relationship 주석을 사용하여 명시적 관계를 지정해야 합니다.

 <xs:element name="MyDataSet" msdata:IsDataSet="true">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
        <xs:element name="OrderDetail">
          <xs:complexType>
            
          </xs:complexType>
       </xs:element>
       <xs:element name="Order">
          <xs:complexType>
            
          </xs:complexType>
       </xs:element>
    </xs:choice>
  </xs:complexType>
</xs:element>
   <xs:annotation>
     <xs:appinfo>
       <msdata:Relationship name="OrdOrdDetailRelation"
          msdata:parent="Order"
          msdata:child="OrderDetail" 
          msdata:parentkey="OrderNumber"
          msdata:childkey="OrderNo"/>
     </xs:appinfo>
  </xs:annotation>
 

이 매핑 프로세스에서는 Relationship 요소를 사용하여 DataSetOrder 테이블의 OrderNumber 열과 OrderDetail 테이블의 OrderNo 열 간에 부모-자식 관계를 만듭니다. 매핑 프로세스에서는 관계만 지정합니다. 즉, 관계형 데이터베이스의 기본 키/외래 키 제약 조건처럼 이러한 열의 값에 대해 제약 조건을 자동으로 지정하지는 않습니다.

단원 내용

관련 단원