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