Установление связи файлов данных. В то время как команда join устанавливает физическую связь данных (создавая новый файл), команда set relation устанавливает логическую связь данных, не изменяя физического содержания таблиц, а синхронно извлекая из файлов данных связанные записи. При перемещении указателя текущей записи по основному файлу автоматически перемещаются указатели на активные записи в зависимых (их может быть несколько) файлах (рис. 3.15, б). Связывание файлов является необходимой операцией при работе с большими БД, включающими более двух файлов, поскольку оно обеспечивает работу SQL, реализующего большинство операций манипулирования данными.
Формат команды:
set relation to@KOD = [<выражение> 1 into <номер_рабочей_области>1 | <псевдоним_файла>1 -[,<выражение>2 into <номер_рабочей_области>2 |<псевдоним_файла>...]
[in <номер_рабочей_области> | <псевдоним_файла>] [additive]]
Параметры
<выражение>1 задает реляционное выражение, которое устанавливает отношение между основной и зависимой таблицами. В качестве реляционного выражения обычно используется выражение управляющего индекса зависимой
таблицы;
into <номер_рабочей_области>1 | <псевдоним файла> 1 - задает для зависимой таблицы номер рабочей области
(<номер_рабочей_области>1) или псевдоним (<псевдоним_файла>1);
<выражение>2 INTO <номер_рабочей_области>2 | <псевдоним_файла> 2 ... и т. д. — с помощью одной команды set relation можно построить несколько отношений между одной основной и различными зависимыми
таблицами;
in <номер_рабочей_области> задает рабочую область основной таблицы, in <псевдоним_файла> задает псевдоним основной таблицы. Если аргументы опущены, основная таблица должна быть открыта в выбранной в данный
момент рабочей области;
additive сохраняет все уже существующие в текущей рабочей области отношения и создает заданное отношение.
Если опустить ключевое слово additive, все отношения в текущей рабочей области разрываются, после чего создается заданное отношение.
Рассмотрим пример:
select 1 use file_l
select 2 use file_2 index field_l
select 3 use file_3 index field_2
select 1
set relation to field_l into 1
field_2 into 2
additive
Здесь текущий файл (file_1) связывается с зависимыми файлами (f ile_2 и f ile_3), после чего записи зависимых файлов «берутся на буксир» и сопровождают записи текущего файла при перемещении. Предполагается, что зависимые файлы индексированы, причем индексные выражения соответствуют полям fieldl и field_2. Тогда в каждый момент времени из зависимых файлов активными будут записи, содержащие значения f ield_l и f ield_2 текущей записи основного файла.
Выдав команду set relation to без аргументов, вы удалите все отношения, установленные в выбранной в данный момент рабочей области. Команду set relation off можно использовать для удаления отдельных отношений типа родитель/потомок.
В Приложениях 5 и 6 приводятся задание на лабораторную работу по основным возможностям, командам и функциям FoxPro и пример отчета о работе, иллюстрирующий большинство из рассмотренных команд системы.
Достарыңызбен бөлісу: |