Теоретико-графовые модели данных
Язык описания данных в сетевой модели
Язык описания данных в сетевой модели имеет несколько разделов:
- описание базы данных — области размещения;
- описания записей — элементов и агрегатов (каждого в отдельности);
- описания наборов (каждого в отдельности).
SCHEMA IS <Имя БД>. AREA NAME IS <Имя физической области>. RECORD NAME IS <Имя записи (уникальное)>
Для каждой записи определяется способ размещения экземпляров записи данного типа:
LOCATION MODE IS {DIRECT (напрямую) | CALC <Имя программы> USING <[Список пер.>] DUPLICATE ARE [NOT] ALLOWED VIA <Имя набора> SET (рядом с записями владельца) SYSTEM (решать будет система)}
Каждый тип записи должен быть приписан к некоторой физической области размещения:
WITHIN <Имя области размещения> AREA
После описания записи в целом идет описание внутренней структуры:
<Имя уровня> <Имя данного> <Шаблон> <Тип>
Номер уровня определяет уровень вложенности при описании элементов и агрегатов данных. Первый уровень — сама запись. Поэтому элементы или агрегаты данных имеют уровень начиная со второго. Если данное соответствует агрегату, то любая его составляющая добавляет один уровень вложенности.
Если агрегат является вектором, то он описывается как
<Номер уровня> <Имя агрегата>.<Номер уровня> <Имя 1-й сост.>
а если — повторяющейся группой, то следующим образом:
<Номер уровня> <Имя агрегата>.OCCURS <N> TIMES
где N — среднее количество элементов в группе.
Описание набора и порядка включения членов в него выглядит следующим образом:
SET NAME IS <Имя набора>; OWNER IS (<Имя владельца> | SYSTEM).
Далее указывается порядок включения новых экземпляров члена данного набора в экземпляр набора:
ORDER PERMANENT INSERTION IS {SORTED | NEXT | PREV | LAST | FIRST}
После этого описывается член набора с указанием способа включения и способа исключения экземпляра — члена набора из экземпляра набора.
MEMBER IS <Имя члена набора> {AUTOMATIC | MANUAL} {MANDATORY | OPTIONAL} KEY IS (ACCENDING | DESCENDING) <Имя элемента данных>
При автоматическом включении каждый новый экземпляр члена набора автоматически попадает в текущий экземпляр набора в соответствии с заданным ранее порядком включения. При ручном способе экземпляр члена набора сначала попадает в БД, а только потом командой CONNECT может быть включен в конкретный экземпляр набора.
Если задан способ исключения MANDATORY, то экземпляр записи, исключаемый из набора, автоматически исключается и из базы данных. Иначе просто разрываются связи.
Внешняя модель при сетевой организации данных поддерживается путем описания части общего связного графа.
Язык манипулирования данными в сетевой модели
Все операции манипулирования данными в сетевой модели делятся на навигационные операции и операции модификации.
Навигационные операции осуществляют перемещение по БД путем прохождения по связям, которые поддерживаются в схеме БД. В этом случае результатом является новый единичный объект, который получает статус текущего объекта.
Операции модификации осуществляют как добавление новых экземпляров отдельных типов записей, так и экземпляров новых наборов, удаление экземпляров записей и наборов, модификацию отдельных составляющих внутри конкретных экземпляров записей. Средства модификации данных сведены в табл. 3.1:
Операция | Назначение |
---|---|
READY | Обеспечение доступа данного процесса или пользователя к БД (сходна по смыслу с операцией открытия файла) |
FINISH | Окончание работы с БД |
FIND | Группа операций, устанавливающих указатель найденного объекта на текущий объект |
GET | Передача найденного объекта в рабочую область. Допустима только после FIND |
STORE | Помещение в БД записи, сформированной в рабочей области |
CONNECT | Включение текущей записи в текущий экземпляр набора |
DISCONNECT | Исключение текущей записи из текущего экземпляра набора |
MODIFY | Обновление текущей записи данными из рабочей области пользователя |
ERASE | Удаление экземпляра текущей записи |
В рабочей области пользователя хранятся шаблоны записей, программные переменные и три типа указателей текущего состояния:
- текущая запись процесса (код или ключ последней записи, с которой работала данная программа);
- текущая запись типа записи (для каждого типа записи ключ последней записи, с которой работала программа);
- текущая запись типа набор (для каждого набора с владельцем T1 и членом T2 указывается, T1 или T2 были последней обрабатываемой записью).
На рис. 3.7 представлена концептуальная модель торгово-посреднической организации.
При необходимости возможно описание элементов данных, которые не принадлежат непосредственно данной записи, но при ее обработке часто используются. Для этого используется тип VIRTUAL с обязательным указанием источника данного элемента данных.
RECORD Цены 02 Цена TYPE REAL 02 Товар VIRTUAL SOURCE IS Товары.НаименованиеТовара OF OWNER OF Товар-Цены SET
Наиболее интересна операция поиска ( FIND ), так как именно она отражает суть навигационных методов, применяемых в сетевой модели. Всего существует семь типов операций поиска:
- По ключу (запись должна быть описана через CALC USING ...):
FIND <Имя записи> RECORD BY CALC KEY <Имя параметра>
- Последовательный просмотр записей данного типа:
FIND DUPLICATE <Имя записи> RECORD BY CALC KEY
- Найти владельца текущего экземпляра набора:
FIND OWNER OF CURRENT <Имя набора> SET
- Последовательный просмотр записей—членов текущего экземпляра набора:
FIND (FIRST | NEXT) <Имя записи> RECORD IN CURRENT <Имя набора> SET
- Просмотр записей—членов экземпляра набора, специфицированных рядом полей:
FIND [DUPLICATE] <Имя записи> RECORD IN CURRENT <Имя набора> SET USING <Список полей>
- Сделать текущей записью процесса текущий экземпляр набора:
FIND CURRENT OF <Имя набора> SET
- Установить текущую запись процесса:
FIND CURRENT OF <Имя записи> RECORD
Например, алгоритм и программа печати заказов, сделанных Петровым, будут выглядеть так: