
- •Создание взаимосвязей между таблицами в vfp
- •Тема: «Создание взаимосвязей между таблицами в Visual Fox Pro»
- •1 Организация взаимосвязей
- •2 Понятие рабочей области
- •3 Установление взаимосвязей «один-к-одному» и «один-ко-многим»
- •Установление взаимосвязи с помощью главного меню
- •Insert — содержит один из возможных типов каскадных воз действий
- •5.2 Корректировка данных в связанных таблицах
- •5.3 Создание итогового табличного файла
Создание взаимосвязей между таблицами в vfp
Тема: «Создание взаимосвязей между таблицами в Visual Fox Pro»
1 Организация взаимосвязей
В FoxPro допускается одновременная работа с несколькими таблицами. Версия Visual FoxPro 3.0 имеет возможность работать одновременно с 25 таблицами. При этом каждая таблица помещается в свою рабочую область, и между таблицами могут быть установлены взаимосвязи. Указатели записей во взаимосвязанных таблицах будут двигаться синхронно. Таблица, в которой указатель перемещается произвольно, называется старшей. Таблица, в которой указатель перемещается в соответствии с перемещением указателя в старшей таблице, называется подчиненной или младшей. Если таблица имеет первичный индекс (ключ), то она может быть родительской. Если таблица имеет внешний индекс (ключ), то она может быть дочерней. В один и тот же момент времени одна таблица может быть родительской по отношению к одной таблице, и дочерней — по отношению к другой таблице. Если несколько записей из первой таблице по одинаковым значениям внешнего ключа ссылаются по единственному значению первичного ключа на одну запись во второй таблице, то первая таблица будет дочерней, а вторая таблица — родительской. Другими словами: одна запись в родительской таблице порождает несколько записей в дочерней таблице. Для установления взаимосвязи и родительская и дочерняя таблицы должны иметь хотя бы одно общее поле. Поле будет общим для старшей и младшей таблицы, если оно имеет:
одинаковое имя
одинаковый тип
одинаковый размер в той и другой таблице.
Допускается подключать к одной старшей таблице несколько младших таблиц. При этом для каждой пары таблиц должно быть свое общее поле. Возможен и частный случай, когда несколько таблиц объединяются по одному общему полю. На практике встречаются три типа объединения таблиц: параллельное, последовательное и смешанное (рисунок 21).
Перед установлением взаимосвязей между таблицами надо выполнить следующие условия:
- все таблицы должны быть открыты, причем каждая в своей рабочей
области; - все таблицы попарно должны иметь общее поле (хотя бы одно); - желательно, чтобы для общего поля и в старшей и в младшей таблице был построен индекс, но в одной таблице индекс должен быть построен обязательно.
Рисунок
- Примеры объединения таблиц
Существует несколько подходов для установления взаимосвязи между таблицами:
конструкция SET RELATION TO;
конструкция SET SKIP TO;
команда JOIN;
команда UPDATE;
команда TOTAL;
переменные памяти.
В каждом конкретном случае, с целью повышения эффективности работы программы, используют тот или иной подход при установлении взаимосвязей между таблицами. Переменные памяти позволяют сохранить значения полей таблиц даже после их закрытия. Переходя от одной таблицы к другой и сохраняя необходимые значения полей, можно обеспечить обработку любого количества таблиц.
2 Понятие рабочей области
Каждая таблица вместе со своими индексными файлами открывается в отдельной рабочей области. Количество рабочих областей зависит от версии FoxPro. Все рабочие области имеют порядковые номера. Например, от 1 до 25 для версии Visual FoxPro 3.0 . Кроме того, первые десять рабочих областей имеет однобуквенные имена от А до J. Не все команды FoxPro могут обрабатывать порядковые номера рабочих областей, поэтому при открытии табличного файла рабочей области можно присвоить псевдоним (ALIAS). Псевдоним пишется буквами латинского алфавита, причем первый символ обязательно буква, а последующие символы могут быть и буквами, и цифрами, допускается и символ подчеркивания. Пробелы при составлении псевдонима не допустимы. Желательно в качестве псевдонима использовать осмысленное сочетание из трех-четырех букв. Более длинные псевдонимы желательно не использовать, так как при написании программных кодов обращение к таблицам производится по псевдонимам рабочих областей, в которых они открыты. При открытии таблиц не обязательно соблюдать строгую нумерацию рабочих областей. В любой момент времени может быть открыто много рабочих областей, но только одна рабочая область будет текущей или активной. Для назначения текущей рабочей области используют команду:
SELECT <номер рабочей области | псевдоним рабочей области> Для доступа к полям таблицы используются префиксы. Для текущей рабочей области префиксом является точка. Для пассивных рабочих областей префиксом является конструкция из двух символов -> минуса и знака больше. Для старших версий FoxPro, начиная с 3.0, допускается использование точки как одного префикса для всех рабочих областей. При обращении к какому-либо полю следует указать псевдоним рабочей области, в которой открыта таблица, затем префикс и потом имя нужного поля.