Создание связей с помощью меню
Установить связи можно с помощью главного меню. Для этого в каждой таблице предварительно строят первичный и внешний ключи, затем выводят на экран диалоговую панель TABLE DESIGNER. Курсор мыши нужно разместить на имени первичного ключа родительской таблицы и вести на имя соответствующего внешнего ключа дочерней таблицы.
Затем на экран выводится панель EDIT RELATIONSHIP, где надо проверить, а при необходимости уточнить, параметры взаимосвязи.
После нажатия на кнопке Ok, на экран выводится диалоговая панель DATABASE DESINER, между именами соответствующих индексов автоматически прорисовывается прямая линия.
Со стороны один линия начинается с символа +, а со стороны много с символа - . Обратная буксировка не допустима (от дочерней к родительской).
Тип взаимосвязи устанавливается автоматически в зависимости от типа индексов.
Если в родительской и в дочерней таблицах индексы уникальны, создается связь «один к одному». Если в родительской индекс уникальный, а в дочерней таблице – регулярный, получается связь «один ко многим».
Чтобы редактировать существующую взаимосвязь необходимо вызвать диалоговую панель EDIT RELATIONSHIP. Для этого установите курсор на линию связи, щелкните левой кнопкой (линия утолщается). Затем правой кнопкой вызвать меню, в котором выбрать пункт EDIT RELATIONSHIP.
Для удаления взаимосвязи её надо выделить, а затем нажать на кнопку DEL.
Создание ссылочной целостности в приложении.
Выполнение условий ссылочной целостности гарантирует помещение в базу данных только достоверной информации. Ссылочная целостность обеспечивается механизмом каскадных воздействий: каскадное удаление и каскадное редактирование ключевых полей.
Каскадное удаление – это одновременное удаление записи из родительской таблицы с удалением соответствующих записей из всех дочерних таблиц.
Удаление записи из дочерней таблицы не ведет за собой удаление её из родительской. Аналогично для редактирования.
Для установления каскадных воздействий надо выделить линию взаимосвязи левой кнопкой мыши и вызвать на экран меню, выбрав пункт REFERENTIAL INTEGRITY. На экран выводится диалоговая панель REFERENTIAL INTEGRITY BUILDER, в которой расположена таблица со следующими графами:
– Parent Table – имя родительской таблицы.
– Child Table – имена дочерних таблиц.
– UpDate – содержит один из возможных типов каскадного воздействия при редактировании поля.
– Delete – содержит один из возможных типов каскадного воздействия при удалении поля.
– Insert – содержит один из возможных типов каскадного воздействия при вставке поля.
– Parent Tag – содержит имя тега в родительской таблице.
– Child Tag – содержит имя тега в дочерней таблице.
Возможные типы каскадного воздействия:
Cascade – при изменении значения поля первичного или альтернативного ключа в родительской таблице автоматически выполняется изменение соответствующего поля в дочерней таблице.
Restrict – запрещает изменение значений полей первичного или альтернативного ключа в родительской таблице, если в дочерней имеются соответствующие во внешнем ключе.
Ignore – допускаются любые изменения. Условия ссылочной целостности не контролируются.
4. Работа в связанных таблицах
Чтобы получить одновременно информацию из разных таблиц, необходимо выполнить следующие действия. Одна таблица размещается в активной рабочей области, а вторая – в пассивной. С помощью команды
JOIN WITH (псевдоним пассивной рабочей области)
TO <имя нового файла>
FOR <условие>
FIELDS <список имен полей>
будет получен новый (третий) табличный файл, который будет записан по указанному адресу. В состав его будут включены любые указанные поля из обеих таблиц, в соответствии с условиями прописанными в операторе FOR.
Особенности выполнения команды:
1. Если в пассивной таблице нет записи с каким-либо значением общего поля, а в активной таблице такое значение общего поля имеется, то запись из активной таблицы не помещается в результирующую таблицу.
2. Если в активной или пассивной таблице имеются записи с дублирующим значением общего поля, то в результирующий файл помещается всё.
Корректирование данных в связанных таблицах.
Иногда бывает нужно внести большое количество изменений в одну таблицу, используя данные из другой таблицы. Для этого корректируемую таблицу необходимо поместить в активную рабочую область, а таблицу-источник для исправления данных – в пассивную, и выполнить команду
UPDATE ON <имя общего поля>
FROM <пассивная рабочая область>
REPLACE <имя поля 1 в активной таблице> WITH <выражение 1> <имя поля 2 в активной таблице> WITH <выражение 2>
ON указывает имя общего поля, причем обе таблицы должны быть проиндексированы по этому полю в порядке возрастания.
FROM указывает имя поля в активной области, куда надо внести изменения в соответствии с <выражение 1> указанным в опции WITH и соответственным по значениям полей пассивной таблицы.
К недостаткам этой команды следует отнести отсутствие контроля на достоверность данных после внесения изменений.
Для обеспечения достоверности должны быть предприняты дополнительные меры.
Создание итогового табличного файла
При создании отчетов необходимо иметь итоговые суммы по некоторым числовым полям.
Команда TOTAL создает итоговый табличный файл, содержащий суммы по указанным полям.
Предварительный табличный файл должен быть отсортирован по ключевому полю. При работе команды подсчитывается сумма по указанным числовым полям, поля других типов копируются в итоговый файл.
Формат команды:
TOTAL ON <имя поля> TO <имя итогового файла>
FIELDS <список имен полей>
FOR <выражение 1>
WHILE <выражение 2>