Реклама:

Первичному ключу в XML-описании схемы соответствует ограничение unique с параметром PrimaryKey. При задании ограничения столбцы первичного ключа повторно не описываются; вместо этого на них уазывается ссылка. Например, в сложном элементе Kaf описывается элемент, соответствующий столбцу KK:

<xs:element name="Kaf">

<xs:element name="KK" type="xs:int" /> </xs:element>

а ниже в схеме задается описание ограничения первичного ключа, содержащего ссылку на указанный столбец:

<xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:Kaf" /> <xs:field xpath="mstns:KK" /> </xs:unique>

Изображение ключа в элементе, соответствующем столбцу, может также указывать на то, что на данный столбец наложено ограничение уникальности, хотя такой столбец может и не входить в состав первичного ключа1. Такие ограничения unique не содержат параметр PrimaryKey. Ниже показан код, добавляемый в схему, если выдвигается требование уникальности значений столбца Nazv в таблице Kaf:

<xs:key name="ndKey1">

<xs:selector xpath=".//mstns:Kaf" /> <xs:field xpath="mstns:Nazv" /> </xs:key>

9.3.4. Отношения между таблицами и ограничение внешнего ключа

Таблицы набора данных могут быть связаны отношениями подчинения. Установка таких отношений отражается в схеме набора данных. На рис. 9.6 показана связь "один-ко-многим" между таблицами Kaf (родительской) и Prep (дочерней) в схеме набора данных nd.

1 Наличие в схеме таблицы уникальных столбцов, не входящих в состав первичного ключа, свидетельствует о недостаточной нормализованности таблицы. Впрочем, в ряде случаев на это идут сознательно, чтобы минимизировать число соединений между таблицами в момент выполнения запросов.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 9.6

Отношение между таблицами задается ограничением внешнего ключа keyref, где указываются столбцы связи обеих таблиц:

<xs:keyref name="KafPrep" refer="mstns:Constraint1">

<xs:selector xpath=".//mstns:Prep" />

<xs:field xpath="mstns:KK" /> </xs:keyref>

9.3.5. Все вместе - это схема

Соединенные в определенной последовательности вместе все описанные выше "строительные кирпичики" и образуют схему набора данных.

Выше на на рис. 9.6 показана схема набора данных nd, состоящего из двух таблиц Kaf и Prep, связанных отношением "один-ко-многим". Ниже приводится XML-описание этой схемы. В ней вы найдете все описанные выше элементы. Комментарии автора заключены в тег <! -> и выделены жирным шрифтом.

<?xml version="1.0" standalone="yes" ?>

<xs:schema id="nd" targetNamespace="http://www.tempuri.org/nd.xsd"

xmlns:mstns="http://www.tempuri.org/nd.xsd"

xmlns="http://www.tempuri.org/nd.xsd"

xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"

attributeFormDefault="qualified" elementFormDefault="qualified">


⇐ Предыдущая страница| |Следующая страница ⇒