Architecture Net



         

Ограничения и связи


Каждый объект DataTable (Таблица данных) содержит коллекцию объектов Da-taRow. Каждый такой объект представляет строку таблицы. Добавление нового объекта DataRow влияет на ограничения объекта DataColumn (мы предполагаем, что свойство Enf orceConstraints объекта DataSet (Набор данных) имеет значение true (истина)).

Первичные ключи

Существует несколько типов ограничений. Первичный ключ — уникальный ключ для строк таблицы. Другие ограничения единственности определяют единственность каждого значения в столбце (или столбцах). Внешний ключ используется для обозначения того, что значения в столбце являются первичными ключами для другой таблицы объекта DataSet (Набор данных). Первичный ключ объекта DataTable (Таблица данных) является свойством:

// Определить РК для таблицы BookCategories DataColumn *bookcategoriesPK [] =
new DataColumn*[2]; bookcategoriesPK[0] = en; bookcategoriesPK[l] = loc; bookcategories->PrimaryKey = bookcategoriesPK;
// Определить РК для таблицы Authors (Авторы) DataColumn *authorsPK [] =
new DataColumn*[1]; authorsPK[0] = auid; authors->PrimaryKey = authorsPK; // авторы
// Определить РК для таблицы Books (Книги) DataColumn *booksPK [] =
new DataColumn*[1]; booksPK[0] = ISBN; books->PrimaryKey = booksPK; // книги

Ограничения

Для работы со всеми ограничениями помимо первичных ключей используются абстрактный базовый класс Constraint (Ограничение) и его производные классы: UniqueConstraint и ForeignKeyConstraint. Базовый класс обеспечивает возможность помещения ограничения в коллекцию ограничений таблицы. Первичный ключ также регистрируется в этой коллекции как ограничение единственности с именем, генерируемым системой. Для определения, является ли ограничение первичным ключом, используется свойство UniqueConstraint::IsPrimaryKey.
Определим уникальность значений столбца Category таблицы Categories (Категории). Так как последний аргумент метода Add (Добавить) имеет значение false (ложь), это ограничение не будет первичным ключом таблицы. Для этой таблицы мы не определяем первичного ключа, а задаем только ограничения единственности. Вообще говоря, задавать ограничения для значений таблицы не обязательно. Хотя это и нарушает правила реляционной целостности, никто не заставляет вас использовать объект DataSet (Набор данных) реляционным способом. // Определим ограничение единственности // для таблицы Categories (Категории) categones->Constraints->Add ( // категории-> Ограничениям Добавить




Содержание  Назад  Вперед