Определение условий целостности данных

Создание первичного ключа

Рассмотрим последовательность ваших действий для создания первичного ключа для таблицы Customer, в качестве которого используется поле icdCustomer (Код покупателя).

1. Откройте окно конструктора таблиц для таблицы Customer. Для этого в окне проекта установите курсор на модифицируемую таблицу и нажмите кнопку Modify конструктора проекта.

2. В окне диалога «Table Designer» выберите вкладку «Indexes».

3. В открывшемся окне диалога в поле Name введите имя индекса icdCustomer.

4. Из списка возможных типов индекса в поле Туре выберите Primary.

5. Перейдите в поле Expression и введите выражение для индекса icdCustomer.

6. Проверьте синтаксис выражения и закройте окно конструктора выражений.

7. Установите переключатель По возрастанию.

8. Для завершения создания индекса нажмите кнопку ОК.

Создание составного индекса

Рассмотрим последовательность ваших действий при создании индекса для таблицы Ordsaled, который упорядочивает данные в таблице по коду за­каза, а внутри заказа — по коду товара. Для создания такого индекса восполь­зуемся индексным выражением.

1. Откройте окно диалога «Table Designer» для таблицы Ordsaled и выбери­те вкладку «Indexes».

2. В открывшемся окне диалога в поле Name введите имя индекса OrdGoods.

3. Из списка возможных типов индекса в поле Туре выберите Regular.

4. Для формирования выражения нажмите кнопку Expression. В окне конст­руктора выражений введите:

STR(icdorder)+STR(icdgoods)

5. Проверьте синтаксис выражения и закройте окно конструктора выраже­ний.

6. Установите переключатель По убыванию.

7. Для завершения создания индекса выберите кнопку ОК.

 

Определение отношений между таблицами

В Visual FoxPro вы можете устанавливать постоянные отношения между таблицами, которые будут поддерживаться при создании форм, отчетов и за­просов. При определении отношений одна из таблиц является родительской, а другая — дочерней. Для родительской таблицы должен быть определен пер­вичный ключ или ключ-кандидат, а для дочерней — индекс для связи с роди­тельской таблицей. Например, при задании отношений между таблицами Customer и Phoncust, для таблицы Customer определен первичный ключ, а таблица Phoncust содержит индекс, не являющийся уникальным, индексное выражение которого состоит из кода покупателя, по которому осуществляется связь между таблицами.

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

1. Выберите родительскую таблицу.

2. Установите курсор мыши на первичный ключ таблицы.

3. Нажмите кнопку мыши и, не отпуская ее, переместите курсор мыши на индекс дочерней таблицы, по которому устанавливается связь.

4. Отпустите кнопку мыши. В окне конструктора базы данных между табли­цами появилась линия, отображающая созданное отношение между таблицами.

5. Установите курсор мыши на линию, соединяющую таблицы, и нажмите дважды курсор мыши. На экране откроется окно диалога «Edit Relations­hip», в котором слева приведены наименование и раскрываю­щийся список индексов родительской таблицы, а справа аналогичная ин­формация о дочерней таблице. В этом же окне диалога приведен тип отно­шений между таблицами. Для сохранения отношения нажмите кнопку ОК, а для отказа — кнопку Cancel.

Определение условий целостности данных

Установленные отношения между таблицами могут быть использованы для задания условий целостности данных. Целостность данных является од­ним из самых важных требований, предъявляемых к базам данных. В качест­ве примера нарушения целостности данных предположим, что в таблице зака­зов Ordsalem из базы данных магазина оптовой торговли содержатся коды по­купателей, которые отсутствуют в таблице Customer, содержащей список по­купателей. В этом случае вы не можете определить, кому был отпущен товар.

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

Для определения условия целостности данных в окне конструктора базы данных выберите команду контекстного меню Referential Integrity или соот­ветствующую ей кнопку панели инструментов «Database Designer». В резуль­тате откроется окно конструктора условий целостности данных «Referential Integrity Builder» (рис. 3.34), которое содержит перечень всех установленных отношений между таблицами. Таблица описания условий содержит наимено­вания родительской и дочерней таблиц, наименования индексов, используе­мых для связи, а также типы действий, выполняемых при модификации данных, добавлении и удалении записей.

 

 

 

Рис. 3.34

Окно диалога «Referential Integrity Builder» для определения условия целостности данных

 

В верхней части окна диалога отображается краткая справка о возможном выборе действий и три переключателя, предназначенных для установки типа выполняемого действия. Кроме того, вы можете выбрать тип действия из рас­крывающегося списка непосредственно в полях Update, Delete и Insert. Рассмотрим последовательность ваших действий для определения условий целостности данных между таблицами Customer и Ordsalem.

1. Откройте окно конструктора базы данных и определите отношение между родительской таблицей Customer и дочерней таблицей Ordsalem.

2. Выберите команду контекстного меню Referential Integrity. На экране от­кроется окно диалога «Referential Integrity Builder».

3. Предположим, что в процессе эксплуатации нашего приложения коды по­купателя могут изменяться, поэтому в поле Update установите тип дейст­вий Cascade.

4. Для обеспечения целостности данных при удалении записей в таблице Customer, в поле Delete установите тип действий Restrict.

5. На рис. 3.35 представлен результат описания действий, которые необходи­мы для обеспечения целостности данных. Для сохранения выполненных действий выберите кнопку ОК.

Рис. 3.35

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: