Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12 Создание взаимосвязей между таблицами в VFP....docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
77.43 Кб
Скачать

Создание взаимосвязей между таблицами в 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, допускается использование точки как одного префикса для всех рабочих областей. При обращении к какому-либо полю следует указать псевдоним рабочей области, в которой открыта таблица, затем префикс и потом имя нужного поля.