У меня есть файл xsd, который описывает схему DataSet, которую я использую для чтения / записи моего DataSet на диск в виде файла xml. Я не писал схему вручную, я написал файл xml вручную, вывел схему из файла xml, а затем выписал схему xsd. (Я довольно новичок в этом ...)
В любом случае, вот схема (здесь происходит кое-что из amazon.com):
<?xml version="1.0" standalone="yes"?>
<xs:schema id="Items" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Items" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Item">
<xs:complexType>
<xs:sequence>
<xs:element name="ASIN" type="xs:string" />
<xs:element name="Title" type="xs:string" />
<xs:element name="Offer" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="MerchantName" type="xs:string" />
<xs:element name="Price" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Когда DataSet читает схему, он создает две таблицы, связанные специальным ключом, который он создает с именем Item_Id, который уникален для каждого элемента, и сопоставляется с предложением. Таким образом, я получаю одну таблицу Item с колонками (ASIN, Title, Item_Id) и таблицу предложений с колонками (MerchantName, Price, Item_Id).
Проблема здесь в том, что ASIN уже является уникальным идентификатором для элемента, и поэтому процесс импорта схемы привнес некоторую избыточность и делает код более неудобным, чем это необходимо. Как я могу изменить эту схему, чтобы в итоге получилось 2 таблицы (ASIN, Title) и (ASIN, MerchantName, Price)?
Спасибо!