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