3.3. Навигационные операции
Навигационные операции обеспечивают проход по
записям одного типа и проход по записям, которые являются членами
набора, владельцем которого является данная запись.
Рассмотрим пример навигационного языка для сетевой модели. В основе
языка лежит механизм сканов (курсоров), которые являются средствами
последовательного просмотра записей.
Команды:
CREATE SCAN <имя> ON <тип записи> [MEMBER <тип набора>]
- создает скан с указанным именем. Ключевое слово MEMBER позволяет
создать скан не для всех записей типа, а только для записей - членов
набора указанного типа, владельцем которого является текущая запись.
DROP SCAN <имя> - удаляет скан
GET NEXT <имя_скана> [WHERE <условие>] - выдача следующей записи,
если указано условие, то следующей записи, удовлетворяющей условию.
Операция выполняется в цикле. Если такого нет, то производится выход
из цикла.
GET OWNER <тип набора> - перейти к собственнику текущей записи в
наборе.
BEGIN <имя_скана>....END - ограничение тела цикла для скана. OUTPUT,
DELETE - операции действий.
Пример. Определим преподавателей ФМФ, получающих зарплату больше
15000 р., удалим тех из них, у кого стаж меньше 2 лет.
CREATE SCAN A ON ФАКУЛЬТЕТЫ BEGIN A
GET NEXT A WHERE название='ФМФ'
CRЕATE SCAN B ON КАФЕДРЫ MEMBER СОСТОЯТЬ_ИЗ BEGIN B
GET NEXT B
CREATE SCAN C ON ПРЕПОДАВАТЕЛИ MEMBER БЫТЬ_СОТР BEGIN C
GET NEXT C WHERE з\п>15000 OUTPUT C END
DROP SCAN C
CREATE SCAN D ON ПРЕПОДАВАТЕЛИ MEMBER БЫТЬ_СОТР BEGIN D
GET NEXT D WHERE (з\п>15000) AND (стаж<2)
DELETE D END
DROP SCAN D END
DROP SCAN B END
DROP SCAN A
|