Sdílet prostřednictvím


Mapování implicitních relací mezi elementy ve vnořeném schématu

Schéma jazyka XSD (Xml Schema Definition Language) může mít složité typy vnořené do sebe. V tomto případě proces mapování použije výchozí mapování a vytvoří následující:DataSet

  • Jedna tabulka pro každý komplexní typ (nadřazený a podřízený).

  • Pokud u nadřazeného objektu neexistuje žádné jedinečné omezení, jeden další sloupec primárního klíče na definici tabulky s názvem TableName_Id kde TableName je název nadřazené tabulky.

  • Omezení primárního klíče v nadřazené tabulce identifikující další sloupec jako primární klíč (nastavením IsPrimaryKey vlastnost True). Omezení má název Constraint#, kde # je 1, 2, 3 atd. Například výchozí název prvního omezení je Constraint1.

  • Omezení cizího klíče v podřízené tabulce identifikující další sloupec jako cizí klíč odkazující na primární klíč nadřazené tabulky. Omezení má název ParentTable_ChildTable kde ParentTable je název nadřazené tabulky a Podřízená tabulka je název podřízené tabulky.

  • Relace dat mezi nadřazenou a podřízenou tabulkou.

Následující příklad ukazuje schéma, kde OrderDetail je podřízený prvek Order.

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

Proces mapování schématu XML vytvoří v datové sadě následující:

  • Order a OrderDetail table.

    Order(OrderNumber, EmpNumber, Order_Id)  
    OrderDetail(OrderNo, ItemNo, Order_Id)  
    
  • Jedinečné omezení v tabulce Order (Objednávka ). Všimněte si, že IsPrimaryKey vlastnost je nastavena na True.

    ConstraintName: Constraint1  
    Type: UniqueConstraint  
    Table: Order  
    Columns: Order_Id
    IsPrimaryKey: True  
    
  • Omezení cizího klíče v tabulce OrderDetail .

    ConstraintName: Order_OrderDetail  
    Type: ForeignKeyConstraint  
    Table: OrderDetail  
    Columns: Order_Id
    RelatedTable: Order  
    RelatedColumns: Order_Id
    
  • Relace mezi tabulkami Order a OrderDetail . Vnořená vlastnost pro tuto relaci je nastavena na True, protože Order a OrderDetail elementy jsou vnořené do schématu.

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

Viz také