Стандарт сетевой модели впервые был определен в 1975 году организацией CODASYL (Conference of Data System Languages), которая определила базовые понятия модели и формальный язык описания.
Базовыми объектами модели являются:
- элемент данных;
- агрегат данных;
- запись;
- набор данных,
Элемент данных — то же, что и в иерархической модели, то есть минимальная информационная единица, доступная пользователю с использованием СУБД.
Агрегат данных соответствует следующему уровню обобщения в модели. В модели определены агрегаты двух типов: агрегат типа вектор и агрегат типа повторяющаяся группа.
Агрегат данных имеет имя, и в системе допустимо обращение к агрегату по имени. Агрегат типа вектор соответствует линейному набору элементов данных. Например, агрегат Адрес может быть представлен следующим образом:
Адрес | |||
Город | Улица | дом | квартира |
Агрегат типа повторяющаяся группа соответствует совокупности векторов данных. Например, агрегат Зарплата соответствует типу повторяющаяся группа с числом повторений 12.
|
|
Зарплата | |
Месяц | Сумма |
Записью называется совокупность агрегатов или элементов данных, моделирующая некоторый класс объектов реального мира. Понятие записи соответствует понятию «сегмент» в иерархической модели. Для записи, так же как и для сегмента, вводятся понятия типа записи и экземпляра записи.
Следующим базовым понятием в сетевой модели является понятие «Набор». Набором называется двухуровневый граф, связывающий отношением «одии-комногим» два типа записи.
Набор фактически отражает иерархическую связь между двумя типами записей. Родительский тип записи в данном наборе называется владельцем набора, а дочерний тип записи — членом того же набора.
Для любых двух типов записей может быть задано любое количество наборов, которые их связывают. Фактически наличие подобных возможностей позволяет промоделировать отношение «многие-ко-многим» между двумя объектами реального мира, что выгодно отличает сетевую модель от иерархической. В рамках набора возможен последовательный просмотр экземпляров членов набора, связанных с одним экземпляром владельца набора.
Между двумя типами записей может быть определено любое количество наборов: например, можно построить два взаимосвязанных набора. Существенным ограничением набора является то, что один и тот же тип записи не может быть одновременно владельцем и членом набора.
В качестве примера рассмотрим таблицу, на основе которой организуем два набора и определим связь между ними:
Преподаватель | Группа | День недели | № пары | Аудитория | Дисциплина | ||
Иванов | Понедельник | 22-13 | КИД | ||||
Иванов | Понедельник | 22-13 | КИД | ||||
Карпова | Вторник | 22-14 | БЗ и ЭС | ||||
Карпова | Вторник | 22-14 | БЗ и ЭС | ||||
Карпова | Вторник | 22-14 | БД | ||||
Смирнов | Вторник | 23-07 | ГВП | ||||
Смирнов | Вторник | 23-07 | ГВП | ||||
|
|
Экземпляров набора Ведет занятия будет 3 (по числу преподавателей), экземпляром набора Занимается у будет 4 (по числу групп). На рис. 3.6 представлены взаимосвязи экземпляров данных наборов.
Рис. 3.6. Пример взаимосвязи экземпляров двух наборов
Среди всех наборов выделяют специальный тип набора, называемый «Сингулярным набором», владельцем которого формально определена вся система. Сингулярный набор изображается в виде входящей стрелки, которая имеет собственно имя набора и имя члена набора, но у которой не определен тип записи «Владелец набора». Например, сингулярный набор М.
Сингулярные наборы позволяют обеспечить доступ к экземплярам отдельных типов данных, поэтому если в задаче алгоритм обработки информации предполагает обеспечение произвольного доступа к некоторому типу записи, то для поддержки этой возможности необходимо ввести соответствующий сингулярный набор.
В общем случае сетевая база данных представляет совокупность взаимосвязанных наборов, которые образуют на концептуальном уровне некоторый граф.
Язык описания данных в сетевой модели
Язык описания данных в сетевой модели имеет несколько разделов:
- описание базы данных — области размещения;
- описания записей — элементов и агрегатов (каждого в отдельности);
- описания наборов (каждого в отдельности).
SCHEMA IS <Имя БД>.
AREA NAME IS <Имя физической области>.
RECORD NAME IS <Имя записи (уникапьное)>
Для каждой записи определяется способ размещения экземпляров записи данного типа:
LOCATION MODE IS'{DIRECT (напрямую)
CALC <Имя программы> USING <[Список пер.>]
DUPLICATE ARE [NOT] ALLOWED
VIA <Имя на6ора> 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:
Таблица 3.1. Операторы манипулирования данными в сетевой модели
Операция | Назначение | ||
READY | Обеспечение доступа данного процесса или пользователя к БД (сходна по смыслу с операцией открытия файла) | ||
FINISH | Окончание работы с БД | ||
FIND | Группа операций, устанавливающих указатель найденного объекта на текущий объект | ||
GET | Передача найденного объекта в рабочую область. Допустима только после FIND | ||
STORE | Помещение в БД записи,.сформированной в рабочей области | ||
CONNECT | Включение текущей записи в текущий экземпляр набора | ||
DISCONNECT | Исключение текущей записи из текущего экземпляра набора | ||
MODIFY | Обновление текущей записи данными из рабочей области пользователя | ||
ERASE | Удаление экземпляра текущей записи | ||
В рабочей области пользователя хранятся шаблоны записей, программные переменные и три типа указателей текущего состояния:
- текущая запись процесса (код или ключ последней записи, с которой работала данная программа);
- текущая запись типа записи (для каждого типа записи ключ последней записи, с которой работала программа);
- текущая запись типа набор (для каждого набора с владельцем Т1 и членом Т2 указывается, Т1 или Т2 были последней обрабатываемой записью).
На рис. 3.7 представлена концептуальная модель торгово-посреднической организации.
|
|
Рис. 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
Например, алгоритм и программа печати заказов, сделанных Петровым, будут выглядеть так:
ФИО = "Петров"
FIND Люди RECORD BY CALC KEY
FIND FIRST Заказы RECORD IN
CURRENT Люди-Заказы SET WHILE NOT FAIL DO
FIND OWNER OF CURRENT
Товары-Заказы SET GET Товары
PRINT НаимТовара FIND NEXT Заказы RECORD IN
CURRENT Люди-Заказы SET
END
- Глава 4. Реляционная модель данных
- Основные определения
- Операции над отношениями. Реляционная алгебра
- Теоретико-множественные операции реляционной алгебры
- Специальные операции реляционной алгебры
- Задания для самостоятельной работы