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

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

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

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

 

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

 

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

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

Наименование Описание
Cascade При изменении значений полей первичного ключа – кандидата в родительской таблице, автоматически осуществляется каскадное удаление всех соответствующих значений в дочерней таблицы. Например, если это правило применить к отношению между таблицами Customer и Ordsale, при изменении кода покупателя в таблице Customer автоматически будут изменены коды и в таблице Ordsale
Restrict Не позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись. Данное правило можно применить к отношению между таблицами Customer и Ordsale, если в созданном приложении коды покупателя определяются на этапе ввода нового покупателя и в дальнейшем не редактируются
Ignore Позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, независимо от существования связанных записей в дочерней таблице. Целостность данных при этом не поддерживается

При удалении записи в родительской таблице возможны следующие варианты действий:

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

 

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

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

 

После завершения определения условий целостности данных необходимо нажать кнопку ОК. в результате вся введенная информация будет сохранена в словаре базы данных. Теперь независимо от приложений при изменении, добавлении и удалении записей будут выполняться указанные действия, обеспечивающие целостность данных.

Хранимые процедуры

Хранимые процедуры являются неотъемлемой частью базы данных. Использование хранимых процедур

Позволяет часть прикладного обеспечения перенести на сервер (модель распределенного приложения). Процедуры хранятся в словаре базы данных, разделяются между несколькими клиентами и выполняются на том же компьютере, что и SQL-сервер.

Хранимые процедуры создаются в проекте приложения. В окне проекта выбираете вкладку Database,затем Stored Proceduresи нажмите кнопкуNew.На экране откроется окно редактирования хранимых процедур. При этом будут отображены все хранимые процедуры проекта. В этом окне можно ввести текст процедуры: как общий для приложения, так и отдельной, используемой в выражении для триггера. Для удаления ненужной более процедуры используется кнопка Remove.

Таблицу можно открыть:

- в главном окне меню VFP: File½ Open ½ Table или Window ½ Data Session;

- в менеджере проектов на вкладке Database;

- в командном окне, используя оператор USE <имя таблицы>.

Примечания:

1. При открытии таблицы любым способом, создается уникальная рабочая область жестко связанная с открываемой таблицей. Если явно не указано имя рабочей области, оно совпадает с именем открываемой таблицы. Все дальнейшие операции с данными в таблице на самом деле проводятся в рабочей области. Переключение между несколькими рабочими областями, в случае наличия нескольких открытых таблиц осуществляется командой SELECT <имя рабочей области>.

2. Команда USE без указания имени таблицы закрывает таблицу, открытую в текущей рабочей области.

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

Задания

1. Создайте на диске каталог с вашим именем.

2. Создайте проект при помощи мастера с именем Sales. В качестве места хранения укажите свой персональный каталог.

3. В окне конструктора проекта создайте базу данных с именем Sales.

4. Создайте таблицы со следующими структурами:

 

Таблица Customer (Покупатель) содержит информацию о покупателях.

№ n/n Наименование Тип Описание
icdCustomer Integer Код покупателя
cCompany Character (20) Предприятие
cLastName Character (16) Фамилия
cFirstName Character (16) Имя
cSecondName Character (16) Отчество
cZIP Character (6) Почтовый индекс
cCountry Character (20) Страна
cRegion Character (20) Область
CCity Character (20) Город
Caddress Character (60) Остальная часть адреса
YCreditLimit Currency Кредит
MNotes Memo Примечание

Первичный ключ (icdCustomer).

 

Таблица PHONCUST, содержащая в себе информацию о телефонах заказчика.

№ поля Наименование Тип Описание
icdCustomer Integer Код покупателя
cPhone Character(10) Телефон покупателя

Первичный ключ (icdCustomer, cPhone).

 

Таблица ORDSALEM, содержащая информацию о дате и менеджере заказа.

№ поля Наименование Тип Описание
icdOrder Integer Номер заказа
icdCustomer Integer Код покупателя
dOrderDate Date Дата заказа
icdManager Integer Код менеджера, продавшего товар

Первичный ключ (icdOrder).

 

Таблица MANAGER, включающая информацию о менеджерах.

№ поля Наименование Тип Описание
icdManager Integer Код менеджера
cnmManager Character(40) Имя менеджера

Первичный ключ (icdManager).

 

Таблица ORDSALED, содержащая информацию о товаре и его количестве.

№ поля Наименование Тип Описание
icdOrder Integer Номер заказа
icdGoods Integer Код товара
nOrderQuant Numeric(10) Заказанное количество товара
mOrderNotes Memo Примечание к заказу

Первичный ключ (icdOrder, icdGoods).

 

Таблица GOODS, хранящая информацию о товарах.

№ поля Наименование Тип Описание
icdGoods Integer Код товара
cnmGoods Character(60) Наименование товара
cnmGoodsGrp Character(40) Группа товара
nUnitPrice Numeric(10.2) Цена

Первичный ключ (icdGoods).

 

5. Для каждой таблицы создайте первичные индексы.

6. Создайте необходимые дополнительные индексы и установите связи между таблицами, как это показано на рис. 18.

Рис. 18 Структура базы данных

 

Обратите внимание! В приведенной структуре допущена одна логическая ошибка. Вам необходимо найти ее, обосновать ваше утверждение и исправить ошибочную связь.

 

7. Установите для таблиц обеспечение целостности данных, выбрав для вставки записей значение Ignore.

8. Просмотрите и отметьте изменения, произведенные системой, после установки соблюдения целостности данных, для разных типов действий при обеспечении целостности данных. Что изменилось в базе данных? Что изменилось в таблицах?

9. Выбрав имя таблицы, и используя кнопку BROWSE, просмотрите содержимое таблиц.

10. В режиме просмотра таблицы при помощи комбинации клавиш Ctrl+Y добавьте несколько строк и заполните эти строки данными.

11. Измените, заголовки нескольких полей в первой таблице и просмотрите ее в режиме BROWSE. (При просмотре обратите внимание на то, чтобы в пункте меню View был выбран режим Browse, а не Edit).

12. При помощи комбинации клавиш Ctrl+T пометьте строки в таблице на удаление. Физически удалить эти строки можно при помощи команды меню Table | Remove Deleted Records.

13. Внесите в каждую таблицу необходимые данные, таким образом, чтобы было зарегистрировано не менее 5 заказчиков, каждый из которых сделал не менее 2-х заказов из 4 изделий. Количество менеджеров должно превышать половину количества заказчиков. В справочнике изделий должны быть изделия, не вошедшие ни в один заказ.

14. Укажите для каждого поля в таблицах краткий комментарий.

15. Сохраните свой проект для дальнейшей работы.

16. Закройте проект и выйдите из Visual FoxPro.

 










Дата добавления: 2015-10-29; просмотров: 1117;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.026 сек.