DataSet スキーマの推論プロセスの概要Summary of the DataSet Schema Inference Process

推論プロセスでは、まず、テーブルとして推論する XML ドキュメントの要素を決定します。The inference process first determines, from the XML document, which elements will be inferred as tables. XML ドキュメントの残りの要素から、それらのテーブルの列が推論によって決定されます。From the remaining XML, the inference process determines the columns for those tables. 入れ子状のテーブルの場合は、入れ子になった DataRelation オブジェクトと ForeignKeyConstraint オブジェクトが生成されます。For nested tables, the inference process generates nested DataRelation and ForeignKeyConstraint objects.

推論規則について、次に簡単に説明します。The following is a brief summary of inference rules:

  • 属性を持つ要素は、テーブルとして推論されます。Elements that have attributes are inferred as tables.

  • 子要素を持つ要素は、テーブルとして推論されます。Elements that have child elements are inferred as tables.

  • 繰り返し出現する要素は、単一のテーブルとして推論されます。Elements that repeat are inferred as a single table.

  • ドキュメント (ルート) 要素に属性がなく、列として推論される子要素もない場合、その要素は DataSet として推論されます。If the document, or root, element has no attributes, and no child elements that would be inferred as columns, it is inferred as a DataSet. それ以外の場合は、ドキュメント要素はテーブルとして推論されます。Otherwise, the document element is inferred as a table.

  • 属性は、列として推論されます。Attributes are inferred as columns.

  • 属性または子要素を持たず、繰り返し出現することもない要素は、列として推論されます。Elements that have no attributes or child elements, and that do not repeat, are inferred as columns.

  • テーブルとして推論される要素が、同じくテーブルとして推論される他の要素の内部に入れ子になっている場合は、その 2 つのテーブル間に入れ子になった DataRelation が作成されます。For elements that are inferred as nested tables within other elements that are also inferred as tables, a nested DataRelation is created between the two tables. その場合、TableName_Id という名前の新しい主キー列がその両方のテーブルに追加され、DataRelation によって使用されます。A new, primary key column named TableName_Id is added to both tables and used by the DataRelation. この TableName_Id 列を使用して、この 2 つのテーブル間に ForeignKeyConstraint が作成されます。A ForeignKeyConstraint is created between the two tables using the TableName_Id column.

  • テーブルとして推論される要素に、テキストは含まれているが子要素は含まれていない場合は、TableName_Text という名前の新しい列が各要素のテキストに作成されます。For elements that are inferred as tables and that contain text but have no child elements, a new column named TableName_Text is created for the text of each of the elements. テーブルとして推論される要素にテキストだけでなく、子要素もある場合、テキストは無視されます。If an element is inferred as a table and has text, but also has child elements, the text is ignored.

関連項目See also