Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Теория Баз Данных.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
319 Кб
Скачать
☆

1.Понятие рабочей области.

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

Указатели записей во взаимосвязанных таблицах будут двигаться синхронно.

В старшей (родительской) таблице указатель перемещается произвольно, в дочерней таблице указатель перемещается в соответствии с перемещением в старшей.

Если таблица имеет первичный ключ, то она может быть родительской, если имеет внешний ключ, то может быть дочерней. В один и тот же момент одна и та же таблица может быть дочерней к одной таблице и родительской к другой. Допускается подключать к одной старшей таблице несколько младших.

Перед установлением связей надо выполнить следующие условия:

  • Все таблицы должны быть открыты, причем каждая в своей области.

  • Все таблицы попарно должны иметь общее поле (хотя бы одно)

  • Для общего поля должен быть построен индекс.

Каждая таблица вместе со своими индексными файлами открывается в отдельной рабочей области. Рабочие области имеют порядковые номера.

Первые десять рабочих областей имеют однобуквенные имена от A до J.

В FoxPro некоторые команды не могут обрабатывать порядковые имена рабочих областей, поэтому при открытии табличного файла рабочей области можно присваивать псевдоним ALIAS.

Желательно в качестве псевдонима присваивать осмысленное сочетание из 3 -4 букв.

В любой момент времени может быть открыто много рабочих областей, но главной будет одна.

Для назначения текущей рабочей области используют команду

SELECT <номер рабочей области или псевдоним>

Для доступа к полям таблицы следует указывать псевдоним рабочей области, в которой открыта таблица, затем точка и потом имя нужного поля.

2.Установление взаимосвязи в приложении с помощью команд

Для установления взаимосвязи текущей делают ту рабочую область, где находится дочерняя таблица и с помощью команды

SET RELATION TO

Подключают одну или несколько таблиц, открытых в пассивной рабочей области.

SET RELATION TO <выр 1> INTO <псевдоним рабочей области> / <выр 2> INTO <псевдоним рабочей области>

<выр 1> и <выр 2> - имена общих полей между дочерней таблицей и несколькими родительскими.

INTO <псевдоним> - псевдонимы рабочих областей, где открыты соответствующие родительские таблицы.

С помощью команды RELATION можно установить взаимосвязь один к одному, т.е. даже если в дочерней таблице общим полем является внешний ключ типа REGULAR и имеется несколько записей с одинаковыми значениями на экран будет выводится только одна запись из дочерней таблицы.

Для разрыва всех взаимосвязей «один к одному» активной таблицы, надо подать команду SET RELATION TO без опций.

Если надо разорвать одну конкретную взаимосвязь между активной (дочерней) таблицей и пассивной (родительской), необходимо подать команду SET RELATION OF INTO <псевдоним рабочей области>

Взаимосвязь один ко многим устанавливается поверх взаимосвязи один к одному, т.е. сначала устанавливается взаимосвязь один к одному, затем дают команду

SET SKIP TO <псевдоним рабочей области>

При этом на экран будет выводиться для одной записи из родительской таблицы несколько записей дочерней.

Для удаления взаимосвязи «один ко многим» надо подать команду SET SKIP TO без опций.