다음을 통해 공유


중첩된 스키마 요소 간의 암시적 관계 매핑

XSD(XML 스키마 정의 언어) 스키마에는 복합 형식이 서로 중첩될 수 있습니다. 이 경우 매핑 프로세스는 기본 매핑을 적용하고 DataSet에서 다음을 만듭니다.

  • 각 복합 형식(부모 및 자식)에 대해 하나의 테이블입니다.

  • 부모에 고유한 제약 조건이 없으면 TableName이라는 테이블 정의당 하나의 추가 기본 키 열이 있습니다_Id 여기서 TableName 은 부모 테이블의 이름입니다.

  • 추가 열을 기본 키로 식별하는 부모 테이블의 기본 키 제약 조건입니다( IsPrimaryKey 속성을 True로 설정). 제약 조건의 이름은 Constraint#입니다. 여기서 #은 1, 2, 3 등입니다. 예를 들어 첫 번째 제약 조건의 기본 이름은 Constraint1입니다.

  • 자식 테이블의 외래 키 제약 조건은 부모 테이블의 기본 키를 참조하는 외래 키로 추가 열을 식별합니다. 제약 조건은 ParentTable_ChildTable로 명명되며, 여기서 ParentTable은 부모 테이블의 이름이고, ChildTable은 자식 테이블의 이름입니다.

  • 부모 테이블과 자식 테이블 간의 데이터 관계입니다.

다음 예제에서는 OrderDetailOrder의 자식 요소인 스키마를 보여줍니다.

<xs:schema id="MyDataSet" xmlns=""
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
  
 <xs:element name="MyDataSet" msdata:IsDataSet="true">  
   <xs:complexType>  
     <xs:choice maxOccurs="unbounded">  
       <xs:element name="Order">  
         <xs:complexType>  
          <xs:sequence>  
            <xs:element name="OrderNumber" type="xs:string" />  
            <xs:element name="EmpNumber" type="xs:string" />  
            <xs:element name="OrderDetail">  
              <xs:complexType>  
                <xs:sequence>  
                  <xs:element name="OrderNo" type="xs:string" />  
                  <xs:element name="ItemNo" type="xs:string" />  
                </xs:sequence>  
              </xs:complexType>  
            </xs:element>  
          </xs:sequence>  
         </xs:complexType>  
       </xs:element>  
     </xs:choice>  
   </xs:complexType>  
  </xs:element>  
</xs:schema>  

XML 스키마 매핑 프로세스는 DataSet에 다음을 만듭니다.

  • OrderOrderDetail 테이블입니다.

    Order(OrderNumber, EmpNumber, Order_Id)  
    OrderDetail(OrderNo, ItemNo, Order_Id)  
    
  • Order 테이블에 대한 고유 제약 조건입니다. IsPrimaryKey 속성은 True로 설정됩니다.

    ConstraintName: Constraint1  
    Type: UniqueConstraint  
    Table: Order  
    Columns: Order_Id
    IsPrimaryKey: True  
    
  • OrderDetail 테이블의 외래 키 제약 조건입니다.

    ConstraintName: Order_OrderDetail  
    Type: ForeignKeyConstraint  
    Table: OrderDetail  
    Columns: Order_Id
    RelatedTable: Order  
    RelatedColumns: Order_Id
    
  • Order 테이블과 OrderDetail 테이블 간의 관계입니다. OrderOrderDetail 요소가 스키마에 중첩되므로 이 관계의 중첩 속성은 True로 설정됩니다.

    ParentTable: Order  
    ParentColumns: Order_Id
    ChildTable: OrderDetail  
    ChildColumns: Order_Id
    ParentKeyConstraint: Constraint1  
    ChildKeyConstraint: Order_OrderDetail  
    RelationName: Order_OrderDetail  
    Nested: True  
    

참고하십시오