Сетевая модель данных

Стандарт сетевой модели впервые был определен в 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), так как именно она отражает суть навигационных методов, применяемых в сетевой модели. Всего существует семь типов операций поиска:

  1. По ключу (запись должна быть описана через CALC USING...):

FIND <Имя записи> RECORD BY CALC KEY <Имя параметра>

  1. Последовательный просмотр записей данного типа:

FIND DUPLICATE <Имя записи> RECORD BY CALC KEY

  1. Найти владельца текущего экземпляра набора:

FIND OWNER OF CURRENT <Имя набора> SET

  1. Последовательный просмотр записей—членов текущего экземпляра набора:

FIND (FIRST | NEXT) <Имя записи> RECORD IN CURRENT <Имя набора> SET

  1. Просмотр записей—членов экземпляра набора, специфицированных рядом нолей:

FIND [DUPLICATE] <Имя записи> RECORD IN CURRENT <Имя набора> SET USING <Список полей>

  1. Сделать текущей записью процесса текущий экземпляр набора:

FIND CURRENT OF <Имя набора> SET

  1. Установить текущую запись процесса:

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. Реляционная модель данных
    • Основные определения
    • Операции над отношениями. Реляционная алгебра
      • Теоретико-множественные операции реляционной алгебры
      • Специальные операции реляционной алгебры
    • Задания для самостоятельной работы

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: