Freigeben über


Zuordnen von impliziten Beziehungen zwischen geschachtelten Schemaelementen

Ein XSD-Schema (XML Schema Definition Language) kann komplexe Typen aufweisen, die ineinander geschachtelt sind. In diesem Fall wendet der Zuordnungsprozess die Standardzuordnung an und erstellt folgende Elemente im DataSet:

  • Eine Tabelle für jeden der komplexen Typen (übergeordnet und untergeordnet).

  • Eine zusätzliche Primärschlüsselspalte pro Tabellendefinition mit dem Namen Tabellenname_Id (dabei ist Tabellenname der Name der übergeordneten Tabelle), wenn für die übergeordnete Tabelle keine eindeutige Einschränkung besteht.

  • Eine Primärschlüsseleinschränkung für die übergeordnete Tabelle, die die zusätzliche Spalte als Primärschlüssel identifiziert (indem die IsPrimaryKey-Eigenschaft auf True festgelegt wird). Die Einschränkung wird mit Constraint # benannt, wobei # für 1, 2, 3 usw. steht. Beispielsweise lautet der Standardname für die erste Einschränkung "Constraint1".

  • Eine Fremdschlüsseleinschränkung für die untergeordnete Tabelle, die die zusätzliche Spalte als den auf den Primärschlüssel der übergeordneten Tabelle verweisenden Fremdschlüssel identifiziert. Die Einschränkung wird mit übergeordneteTabelle_untergeordneteTabelle benannt, wobei übergeordneteTabelle der Name der übergeordneten Tabelle und untergeordneteTabelle der Name der untergeordneten Tabelle ist.

  • Eine Datenbeziehung zwischen übergeordneten und untergeordneten Tabellen.

Im folgenden Beispiel wird ein Schema dargestellt, in dem OrderDetail ein untergeordnetes Element von Order ist.

<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>  

Durch den XML-Schemazuordnungsprozess werden im DataSet die folgenden Elemente erstellt:

  • Eine Tabelle Order und eine Tabelle OrderDetail.

    Order(OrderNumber, EmpNumber, Order_Id)  
    OrderDetail(OrderNo, ItemNo, Order_Id)  
    
  • Eine eindeutige Einschränkung für die Tabelle Order. Beachten Sie, dass die IsPrimaryKey-Eigenschaft auf True festgelegt wurde.

    ConstraintName: Constraint1  
    Type: UniqueConstraint  
    Table: Order  
    Columns: Order_Id
    IsPrimaryKey: True  
    
  • Eine Fremdschlüsseleinschränkung für die Tabelle OrderDetail.

    ConstraintName: Order_OrderDetail  
    Type: ForeignKeyConstraint  
    Table: OrderDetail  
    Columns: Order_Id
    RelatedTable: Order  
    RelatedColumns: Order_Id
    
  • Eine Beziehung zwischen der Tabelle Order und der Tabelle OrderDetail. Die Nested-Eigenschaft für diese Beziehung ist auf True festgelegt, da das Order-Element und das OrderDetail-Element im Schema geschachtelt sind.

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

Siehe auch