Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-06-02.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
26.54 Mб
Скачать

2.4.17.2. Команда установки связей между таблицами

Команда Set Relation To [<Выр> Into <Псевдоним>] ... [additive] свя­зывает активную главную (родительскую, ведущую) таблицу с откры­той подчиненной (дочерней, ведомой) таблицей из другой рабочей области.

Вторая таблица идентифицируется фразой Into <Псевдоним>. При перемещении указателя записи в активной главной таблице, указатель в связанной подчиненной таблице автома­ти­чески перемещается на соответствующую связанную запись. Если в связанной таблице такая за­пись не найдена, то указатель устанавливается на конец таблицы.

Связь таблиц может быть установлена следующими способами.

  1. Если таблица, имя которой задано <псевдонимом>, проин­дек­­сирована, то <Выр> может включать константы и значения полей активной таблицы для поиска соответствующего значения ключа ин­дек­са подчиненной таблицы. Индекс должен быть построен по <Выр>, иначе возникает ошибка.

  2. Если таблица, имя которой задано <псевдонимом>, не ин­дек­сирована, то <Выр> должно быть числовым. Выражение вы­чис­ляется для текущей записи активной таблицы, и результат исполь­зу­ет­ся в качестве номера записи второй таблицы.

Можно построить и множественную связь. При этом текущая вы­б­ранная таблица связывается с несколькими таблицами в других рабо­чих областях. Выражения связи в команде разделяются запятыми.

Additive - обеспечивает сохранение ранее установленных связей таблиц.

Команда без аргументов отменяет все связи, установленные из текущей рабочей области.

Пример связывания шести таблиц представлен ниже (рис.2.4.17.2.1).

Рисунок 2.4.17.2.1. Концептуальная модель из шести таблиц

Select 1 && установка первой рабочей области

Use Izdelie && ведущая таблица - выпуск изделий

Use Postavh Index Postavh In 2 && поставщики

Use Potrebit Index Potrebit In 3 && потребители

Use Minpotr Index Minpotr In 4 && министерство потребителей

Use Gorpost Index Gorpost In 5 && города поставщиков

Use Oblpost Index Oblpost In 6 && области поставщиков

Set Relation To Kod_Post Into Postavh && изделия->поставщики

Set Relation To Kod_Potr Into Potrebit Additive && изделия->потребители

Select Potrebit && ведущая таблица - потребители

Set Relation To Kod_Min Into Minpotr Additive &&потребители->мин. потребителя

Select Postavh && ведущая таблица - поставщики

Set Relation To Kod_Gor Into Gorpost Additive &&поставщики->гор. поставщика

Select Gorpost && ведущая таблица - города поставщиков

Set Relation To Kod_Obl Into Oblpost Additive &&города->области

Select Izdelie &&установка текущей рабочей области с таблицей - изделия

Команда Set Skip To [<псевдоним1> [, <псевдоним2>] ... ] создает между таблицами отношения типа “один-ко-многим”. Отношение “один-ко-многим” устанавливается наподобие отношения “один-к-од­но­му”. Прежде всего, отношения между исходной и порожденными таб­ли­ца­ми устанавливается посредством Set Relation. Затем выдается команда Set Skip, что формирует отношение “один-ко-многим”. Если ис­ход­ная таблица связывается с несколькими порожденными, то необхо­ди­мо вклю­чить список псевдонимов, разделенных запятыми (<псевдоним1>, <псев­доним2>, ... ).

Для удаления отношения типа “один-ко-многим” из текущей вы­б­ран­ной рабочей области используется команда Set Skip To без ар­гу­ментов. При этом составляющие его отношения типа “один-к-одному” про­должают еще существовать и могут быть удалены командой Set Relation To.

Пример

Select 1 && исходная рабочая область

Use Izdelie && исходная таблица - номенклатура изделий

Use Vipusk Index Vipusk In 2 && порожденная таблица выпуска изделий

Set Relation To Kod_Zavoda Into Vipusk && установка отношения

Set Skip To Vipusk && “один-ко-многим”

* вывод полей из исходной (Naim) и порожденной (Kol, Data) таблиц

Browse Fields Izdelie.Naim, Vipusk.Kol, Vipusk.Data