Лекция № 9 Операции в сетевых моделях данных
НАВИГАЦИОННЫЕ ОПЕРАЦИИ.
Навигационные операции в сетевых моделях данных должны обеспечивать:
¨ установление позиции в БД безотносительно к связям между записями,
¨ навигацию по связям, соединяющим записи.
Для выполнения навигации с использованием текущих необходимо иметь соответствующие индикаторы:
¨ индикатор текущей процесса, указывающий место последнего обращения к базе данных,
¨ индикатор текущей для каждого типа записей, указывающий последний экземпляр записи, к которому было обращение,
¨ индикатор текущей для каждого типа набора, указывающий для типа набора экземпляр, к которому было последнее обращение.
Обновление индикаторов производится системой при успешном завершении операций. Например, если при помощи навигационной операции осуществлена селекция экземпляра записи и эта запись является подчиненной записью в наборе типа S, то индикатор текущей набора S будет установлен на позицию этой записи.
Ниже операции будут рассматриваться с ориентацией на модель Рабочей Группы по Базам Данных (РГБД) CODASYL. Эта модель, использованная, в частности, в СУБД IDMS (Integrated Database Managment System), предусматривает, что для каждой записи СМД может назначаться ключ базы данных, который является внешним ключом, уникально идентифицирующим экземпляр записи в БД. При описании навигационных операций для обеспечения компактности записи будем использовать следующие соглашения:
И_З - будет заменять выражение <идентификатор записи> RECORD,
И_Н - будет заменять выражение <идентификатор набора> SET.
Cледующие операции позволяют устанавливать текущие независимо от связей:
¨ поиск записи по значению ключа базы данных
FIND И_З USING <идентификатор >
(здесь идентификатор задает значение ключа БД),
¨ поиск записи заданного типа по условиям (по квалификации)
FIND [NEXT DUPLICATE] И_З [WHERE <квалификация>]
Например, поиск факультетов, относящихся к отделению с кодом 1 может быть реализован с помощью оператора
FIND FAC RECORD WHERE DEP=1
Следующие две навигационные операции позволяют установить текущие, базируясь на связях между записями. Для спецификации конкретной записи набора можно использовать оператор
+- -+
¦ NEXT ¦
FIND -¦ PRIOR +- И_З OF И_Н
¦ FIRST ¦
¦ LAST ¦
¦ n ¦
+-- -+
Например,
FIND FIRST FAC RECORD OF FAC_UN SET.
Предложение
FIND OWNER И_З OF И_Н
задает выборку владельца набора. При этом, как и для предыдущей операции предполагается, что индикатор текущей установлен предварительно в требуемом экземпляре набора. Пример использования операции:
FIND OWNER SPEC RECORD OF SPEC_FAC SET.
Язык манипулирования данными IDMS предусматривает средства включения новых записей, обновления существующих, а также средства удаления записей. Оператор
STORE И_З
позволяет включить в БД новую запись типа И_З. При этом новая запись включается в наборы тех типов, автоматическим членом которых она является. Для корректности выбора экземпляра набора для каждого из соответствующих типов наборов используется спецификация выбора типа набора SET SELECTION. Запись становится текущей записью И_З всех наборов в которые она включается, при этом автоматически меняются текущие экземпляры этих наборов. Оператор
MODIFY И_З
позволяет модифицировать содержание записи И_З. Предварительно эта запись с помощью операторов FIND или STORE должна быть сделана текущей процесса. Оператор
+- -+
¦пробел ¦
DELETE И_З -¦ONLY +¦SELECTIV¦
¦ALL ¦
+- -+
удаляет записи из БД. Одновременно удаляются соответствующие экземпляры типов наборов, где данная запись является владельцем. В первом варианте удаление записи допускается только в том случае, если все экземпляры наборов, владельцем которых она является не содержат подчиненных записей. Режим ONLY предусматривает удаление вместе с данной записью всех обязательных членов набора, и исключение из экземпляров наборов (но оставление в БД) всех подчиненных записей с необязательным членством в наборе. Вариант SELECTIVE подразумевает удаление из БД всех членов экземпляров наборов с удаляемой записью владельцем, если эти записи не являются одновременно членами других наборов. Наконец режим ALL предусматривает удаление всех подчиненных записей вне зависимости от типа членства или вхождения в другие наборы. Во всех случаях, когда удаляется запись, действие оператора DELETE распространяется на записи члены тех наборов, владельцем которых она является так, как если бы оператор DELETE применялся к ним непосредственно.
Для включения записи в набор применяется оператор INSERT:
INSERT И_З INTO И_Н, для исключения оператор REMOVE:
REMOVE И_З RECORD FROM И_Н.
Операции включения в набор данных применяются только в случае ручного и необязательного членства в наборе, а операции исключения - только при необязательном членстве записей в наборе.
СПЕЦИФИКАЦИОННЫЕ ОПЕРАЦИИ.
Спецификационные операции в СМД схожи с соответствующими операциями в РМД: результатом операции является совокупность записей для некоторой таблицы. Однако имеются следующие отличия:
¨ в СМД результативные записи могут быть выделены с учетом структуры связей между типами записей;
¨ результативные записи в совокупности со своими связями позволяют выделить некоторое подмножество типов записей и наборов записей в реализации БД.
Cетевые спецификационные операции выделяют подграф схемы и базы данных, позволяя осуществлять селекцию записей в зависимости от связей между записями и с учетом информации об этих связях. Выделяемый подграф носит название контекста данных.
Аналогично сетевым навигационным операциям сетевые спецификационные операции позволяют осуществлять селекцию записей вне зависимости от связей между ними и с учетом информации о связях.
Общий вид оператора для выделения контекста:
METKA1:
[FOR < METKA2 > [ BY И_Н]]
И_З
+-¦ [ WHERE < условие > ]
+-+
[ AND < И_Н > < предикат > [ квантор ] И_З ] +-+
МЕТКА2 здесь используется как идентификатор результата спецификационной операции (аналог представления в SQL), которая создает контекст данной операции. МЕТКА1 в свою очередь может использоваться для создания контекста контекста в других спецификационных операциях. Часть оператора, заключенная в фигурные скобки может повторяться. По умолчанию используется квантор общности SOME (некоторый, хотя бы один). Наряду с ним могут использоваться явно объявленные кванторы:
ALL - все (каждый),
NO - никакой,
AT LEAST n - не менее n (по крайней мере n ),
AT MOST n - не более n,
EXACTLY n - точно n.
Предикат может наряду с операциями сравнения использовать такие ключевые слова, как HAS. Схематично структуру спецификационной операции можно представить следующим образом (рис. 9.1).
- определяются идентификатором
МЕТКА 2
набор результативные записи, которые
которые выбираются с использованием условий (квалификации)
предикаты для экземпляров наборов,
владельцы которых войдут в результат
Рисунок 9.1.
Примеры спецификационных операций:
EX1: BOOKS RECORD WHERE YIZD>1995
EX2: FAC RECORD
WHERE DEP=1 AND SPEC_FAC SET HAS AT LEAST 5 SPEC RECORDS
EX3: FOR EX2 BY GROUP_FAC SET
GROUPS RECORD WHERE QST<17
Благодаря описанной выше конструкции спецификационные операции в СМД являются мощным инструментом манипулирования данными.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.