Создание отношений наборов данных из схемы XML (XSD)

В DataSet взаимосвязь между двумя или несколькими столбцами формируется путем создания отношения «родитель-потомок». Существует три способа представления отношения DataSet в схеме языка определения схемы XML (XSD):

  • Задайте вложенные сложные типы.

  • Используйте заметку msdata:Relationship .

  • Укажите xs:keyref без заметки msdata:ConstraintOnly.

Вложенные сложные типы

Определения вложенных сложных типов в схеме указывают на связь элементов по модели «родитель-потомок». В следующем фрагменте схемы XML показано, что OrderDetail является дочерним элементом элемента Order .

<xs:element name="Order">  
  <xs:complexType>  
     <xs:sequence>
       <xs:element name="OrderDetail" />  
           <xs:complexType>
           </xs:complexType>  
     </xs:sequence>  
  </xs:complexType>  
</xs:element>  

Процесс сопоставления схемы XML создает таблицы в наборе данных, которые соответствуют вложенным сложным типам в схеме. Он также создает дополнительные столбцы, используемые в качестве родительских-дочерних столбцов для созданных таблиц. Обратите внимание, что эти родительские-дочерние столбцы указывают связи, которые не совпадают с указанием ограничений первичного ключа или внешнего ключа.

Заметка msdata:Relationship

Заметка msdata:Relationship позволяет явно указывать связи между элементами в схеме, которые не вложены. В следующем примере показана структура элемента Relationship .

<msdata:Relationship name="CustOrderRelationship"
msdata:parent=""
msdata:child=""
msdata:parentkey=""
msdata:childkey="" />  

Атрибуты заметки msdata:Relationship определяют элементы, участвующие в связи с родительским дочерним элементом, а также элементы родительского ключа и дочерние элементы и атрибуты, участвующие в связи. Процесс сопоставления использует эти сведения для создания таблиц в Наборе данных и создания связи первичного ключа и внешнего ключа между этими таблицами.

Например, следующий фрагмент схемы указывает элементы Order и OrderDetail на том же уровне (не вложено). Схема задает заметку msdata:Relationship , которая указывает связь между этими двумя элементами. В этом случае необходимо указать явную связь с помощью заметки msdata:Relationship .

 <xs:element name="MyDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
        <xs:element name="OrderDetail">  
          <xs:complexType>  
  
          </xs:complexType>  
       </xs:element>  
       <xs:element name="Order">  
          <xs:complexType>  
  
          </xs:complexType>  
       </xs:element>  
    </xs:choice>  
  </xs:complexType>  
</xs:element>  
   <xs:annotation>  
     <xs:appinfo>  
       <msdata:Relationship name="OrdOrdDetailRelation"  
          msdata:parent="Order"  
          msdata:child="OrderDetail"
          msdata:parentkey="OrderNumber"  
          msdata:childkey="OrderNo"/>  
     </xs:appinfo>  
  </xs:annotation>  

Процесс сопоставления использует элемент Relationship для создания связи между столбцом OrderNumber в таблице Order и столбцом OrderNo в таблице OrderDetail в наборе данных. Процесс сопоставления только указывает связь, он не задает автоматически ограничения значений в этих столбцах подобно ограничениям первичного/внешнего ключа в реляционных базах данных.

В этом разделе

Сопоставление неявных отношений между вложенными элементами схемы
Описывает ограничения и связи, которые неявно создаются в наборе данных при обнаружении вложенных элементов в схеме XML.

Сопоставление отношений, заданных для вложенных элементов
Описывает, как явно задать отношения в наборе данных для вложенных элементов в схеме XML.

Указание отношений между элементами без вложенности
Описывает создание связей в наборе данных между элементами схемы XML, которые не вложены.

Наследование реляционной структуры DataSet от схемы XML (XSD)
Описывает реляционную структуру или схему набора данных, созданного на основе схемы XSD.

Сопоставление ограничений схемы XML (XSD) с ограничениями DataSet
Описывает элементы схемы XML, используемые для создания уникальных и внешних ограничений ключей в наборе данных.

См. также