Delen via


Impliciete relaties tussen geneste schema-elementen toewijzen

Een XSD-schema (XML Schema Definition Language) kan complexe typen in elkaar genest hebben. In dit geval past het toewijzingsproces standaardtoewijzing toe en maakt het volgende in de DataSet:

  • Eén tabel voor elk van de complexe typen (bovenliggend en onderliggend).

  • Als er geen unieke beperking bestaat op het bovenliggende item, wordt er één extra primaire-sleutelkolom per tabeldefinitie met de naam TableName_Id waarbij TableName de naam van de bovenliggende tabel is.

  • Een primaire-sleutelbeperking in de bovenliggende tabel die de extra kolom identificeert als de primaire sleutel (door de eigenschap IsPrimaryKey in te stellen op True). De beperking heet Constraint# waarbij #1, 2, 3 enzovoort is. De standaardnaam voor de eerste beperking is bijvoorbeeld Constraint1.

  • Een refererende-sleutelbeperking in de onderliggende tabel die de extra kolom identificeert als de refererende sleutel die verwijst naar de primaire sleutel van de bovenliggende tabel. De beperking heet ParentTable_ChildTable waarbij ParentTable de naam is van de bovenliggende tabel en ChildTable de naam van de onderliggende tabel is.

  • Een gegevensrelatie tussen de bovenliggende en onderliggende tabellen.

In het volgende voorbeeld ziet u een schema waarin OrderDetail een onderliggend element van Order is.

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

Het toewijzingsproces voor xml-schema's maakt het volgende in de DataSet:

  • Een tabel Order en OrderDetail .

    Order(OrderNumber, EmpNumber, Order_Id)  
    OrderDetail(OrderNo, ItemNo, Order_Id)  
    
  • Een unieke beperking in de tabel Order . Houd er rekening mee dat de eigenschap IsPrimaryKey is ingesteld op True.

    ConstraintName: Constraint1  
    Type: UniqueConstraint  
    Table: Order  
    Columns: Order_Id
    IsPrimaryKey: True  
    
  • Een beperking voor refererende sleutels in de tabel OrderDetail .

    ConstraintName: Order_OrderDetail  
    Type: ForeignKeyConstraint  
    Table: OrderDetail  
    Columns: Order_Id
    RelatedTable: Order  
    RelatedColumns: Order_Id
    
  • Een relatie tussen de tabellen Order en OrderDetail . De geneste eigenschap voor deze relatie is ingesteld op True omdat de elementen Order en OrderDetail zijn genest in het schema.

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

Zie ook