Операции в сетевых моделях данных

Страницы работы

Содержание работы

Лекция № 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

Благодаря описанной выше конструкции спецификационные операции в СМД являются мощным инструментом манипулирования  данными.

Похожие материалы

Информация о работе

Предмет:
Базы данных
Тип:
Конспекты лекций
Размер файла:
44 Kb
Скачали:
0