Ссылочное ОЦ на практике
Общая характеристика действий по редактированию
ссылочной целостности данных в связанных таблицах
И возможностей настроек для выполнения операций в диалоговом окне
Referential Integrity Builder (описание общего построения)
В предыдущих лабораторных работах мы научились создавать автономные таблицы, выполнять реорганизацию данных в этих таблицах (изменять, удалять, и добавлять записи, т.е. редактировать записи) и создавать связи между автономными таблицами.
Теперь научимся определенным правилам СУБД (UpDate, Delete и Insert), обеспечивающим ссылочное ограничение целостности при редактировании записей в связанных таблицах.
Предварительные действия
В среде VFP в диалоговом окне (ДО) Project Manager выполнить следующие действия:
§ Создать вторую БД (2-й контейнер) с именем Data2, для чего выполнить команду Главного меню (ГМ) File->New, в появившемся ДО включить радио-кнопку Database. Если контейнер не добавился в проект, то в окне Project Manager встать на строку Databases и нажать кнопку ADD для добавления новой базы в проект.
§ Открыть контейнер с именем Database Designer: Data2 командой ГМ File->Open.
§ Создать новый программный файл (под любым именем) для получения в нем копий таблиц-оригиналов базы Data1 в виде свободных таблиц (Detl_k1, Poshk_k1, Poski_k1, Proek_k1), не принадлежащих этой базе, по следующей программе:
Close table all
Use Detl
Copy to Detl_k1
Use Poshk
Copy to Poshk_k1
и т.д.
- Добавить все копии таблиц в созданный контейнер Database Designer: Data2, выделив для этого в диалоговом окне Project Manager строку Tables в контейнере Data2 и нажав кнопку ADD, или на рабочем поле Database Designer: Data2 в контекстном меню выбрать команду АDD.
- Создать в таблице Poski_k1 три вторичных индекса с типом Regular для полей nomp, nomd, nomr соответственно под именами nomp_i1, nomd_i1, nomr_i1, a в таблицах Poshk_k1, Detl_k1, Proek_k1 первичные индексы Primary соответственно по таким же полям под именами nomp_i, nomd_i, nomr_i.
Основные действия
Для создания правил ссылочного ОЦ необходимо:
1. Открыть контейнер Database Designer БД Data2 и разместить в нем образы таблиц таким образом, чтобы файл-процесс Poski_k1 был в центре между файлами-справочниками Detl_k1, Poshk_k1, Proek_k1.
2.Связать сначала только первичный ключи nomp_i файла-справочника Poshk_k1 совторичнымключом nomp_i1 файла-процесса Poski_k1 (направление связи – от первичного ключа к вторичному).
Далее аналогично последовательно связать первичные ключи nomd_i, nomr_i файлов-справочников Detl_k1, Proek_k1 с соответствующими ключами nomd_i1, nomr_i1 файла-процесса Poski_k1.
3. Выбрать команду Edit Referential Integrity (редактирование ссылочной целостности) одним из 3-х способов:
либо в пункте View Главного меню выбрать строку Database Designer, затем в контекстном меню окна Database Designer выбрать команду Edit Referential Integrity, вызывающую контекстное меню окна Database Designer;
либо непосредственно в контекстном меню окна Database Designer выбрать ту же команду;
либо в пункте Database Designer Главного меню выбрать ту же команду Edit Referential Integrity.
Результат: появляется диалоговое окно Referential Integrity Builder (англ. refer- ссылаться на что-либо, передавать какие-либо сведения, направлять к кому-либо),т.е. окно Построителя ссылочной (передаваемой) целостности данных, представленное на рис.9.1. В окне Построителя производится настройка, определяющая характер связи между родительскими и дочерними таблицами, т.е. характер состояния записей в дочерней таблице при изменении, удалении или добавлении данных в родительскую таблицу.
Окно Построителя имеет:
3 вкладки (Rules of Updating, Rules of Deleting, Rules of Inserting);
меню из 3-х радио-кнопок с режимами выбора связи Cascade, Ignore или Restrict (каскадное изменение всех связанных записей в дочерней ТБД с новым значением ключа, заданное по умолчанию; ограничение запрета на изменение, если имеются связанные записи в дочерней ТБД; разрешение всегда изменять и "оставлять в покое" записи в дочерней ТБД);
таблицу из 7-ми столбцов. Два левых столбца Parent Таble и Child Таblе служат для автоматической фиксации имен связываемых родительской и дочерней таблиц, два правых столбца - для автоматической фиксации имен индексов связи в родительской и дочерней таблицах. Три средних столбца под управлением пользователя с помощью своих заголовков, имеющих раскрывающиеся списки, дублируют назначение вкладок окна и служат для выбора операции (команды или опции) связи.
При раскрытии списка столбцов Update (Изменение) и Delete (Удаление) возникают 3строки с командами связи Cascade, Restrict (ограничение) и Ignore, при раскрытии списка столбца Insert (Добавление) – 2 строки с командами связи Restrict и Ignore (назначение этих команд см. в лекции).
4. Пользователю надо выбрать опцию изменения, удаления или добавления данных в родительской таблице одним из 2-х способов: либо выбрать соответствующую вкладку Rules of Updating, Rules of Deleting, Rules of Inserting и установить в ней с помощью меню из радио-кнопок определенный режим; либо щелкнуть по заголовку соответствующего столбца Update, Delete или Insert и в раскрывшемся списке строк заголовка столбца выбрать строку Cascade, Ignore или Restrict.
Рис. 9.1 Окно создания правил для ссылочного ОЦ в ТБД
Мы задаем эти опции для того, чтобы продемонстрировать действия СУБД. Если пользователь изменит, удалит или добавит данные в родительской таблице, то за счет налаженных связей между родительскими и дочерними таблицами все аналогичные операции автоматически при правильной настройке произойдут и в дочерней таблице, а при неправильной – они не выполнятся и вызовут отрицательную реакцию СУБД.
9.2. Выполнение операций между связанными таблицами с помощью настройки диалогового окна Referential Integrity Builder