Структура данных сетевой модели
Большое влияние при разработке стандарта сетевой модели оказал американский ученый Ч. Бахман. Разработка основных принципов сетевой модели данных началась в середине 1960-х гг., а ее эталонный вариант в 1971 г. описала CODASYL (COnference on DAta SYstem Languages) – рабочая группа по языкам баз данных.
Сетевую модель данных определяют те же термины, что и иерархическую. Сетевая модель включает множество записей, которые являются владельцами или членами групповых отношений. Владелец и член связаны между собой отношением типа 1:n.
Основным различием иерархической и сетевой модели является то, что в сетевой модели запись может являться членом более одного группового отношения. Каждое групповое отношение в сетевой модели имеет имя и различается его тип и экземпляр. Типом группового отношения определяются свойства, которые являются общими для всех экземпляров данного типа. Экземпляром группового отношения является запись-владелец и множество подчиненных записей, которое может быть пустым. При этом существует ограничение: экземпляр записи не может являться членом 2-х экземпляров групповых отношений одного типа (например, сотрудник не может быть работником двух отделов).
При организации сетевой структуры:
- запись СОТРУДНИК содержится в двух групповых отношениях;
- для отображения связи типа m:n вводят запись СОТРУДНИК_КОНТРАКТ, которая не содержит полей и существует лишь с целью связать записи КОНТРАКТ и СОТРУДНИК (рисунок 1). Следует отметить, что данная запись может хранить и полезную информацию (например, долю сотрудника в общем вознаграждении по заданному контракту).
У каждого экземпляра группового отношения имеются определенные признаки:
-
Способ упорядочивания подчиненных записей:
- произвольный;
- сортированный;
- хронологический (очередь);
- обратный хронологический (стек).
Если запись является подчиненной и содержится в нескольких групповых отношениях, то в каждом из отношений можно назначить свой способ упорядочивания.
-
Режим включения подчиненных записей:
- ручной, при котором подчиненная запись может быть запомнена в БД и не включена немедленно в экземпляр группового отношения. Эту операцию позже инициирует пользователь;
- автоматический, при котором не представляется возможным занесение в БД записи без того, чтобы ее сразу же не закрепили за определенным владельцем.
-
Режим исключения. Выделяют 3 класса членства подчиненных записей в групповых отношениях:
- Обязательное. Переключение подчиненной записи на другого владельца допускается, но она не может существовать без владельца. Для того, чтобы удалить запись-владелец необходимо, чтобы она не имела подчиненные записи с обязательным членством. Такое отношение существует между записями СОТРУДНИК и ОТДЕЛ. В случае расформирования отдел всех его сотрудников необходимо перевести в другие отделы или уволить.
- Необязательное. Исключение записи из группового отношения возможно при сохранении ее в базе данных без прикрепления к другому владельцу. При удалении записи-владельца происходит сохранение в базе ее подчиненных записей (необязательных членов), которые больше не участвуют в групповом отношении этого типа. Пример необязательного группового отношения: ВЫПОЛНЯЕТ между записями СОТРУДНИКИ и КОНТРАКТ, т.к. на предприятии могут работать сотрудники, которые не выполняют какие-либо договорные обязательства перед заказчиками.
- Фиксированное. Жесткая связь подчиненной записи с записью-владельцем и ее возможно исключить из группового отношения лишь при удалении. При удалении записи-владельца происходит автоматическое удаление всех ее подчиненных записей. Пример фиксированного членства: групповое отношение ЗАКЛЮЧАЕТ между записями КОНТРАКТ и ЗАКАЗЧИК, т.к. контракт не существует без заказчика.
Операции над данными в сетевой модели
Добавление – внесение записи в базу данных и, в зависимости от режима включения, или включение ее в групповое отношение, где она является подчиненной, или не включение ни в какое групповое отношение.
Включение в групповое отношение – связывание существующей подчиненной записи с записью-владельцем.
Переключение – связывание существующей подчиненной записи с другой записью-владельцем в том же групповом отношении.
Обновление – изменение значения элементов предварительно извлеченной записи.
Извлечение – извлечение записи последовательно по значению ключа и при использовании групповых отношений:– от записи-владельца можно перейти к записям-членам, а от подчиненной записи – к владельцу.
Удаление – удаление записи из базы данных. Если запись – это владелец группового отношения, то происходит анализ класса членства подчиненных записей. Обязательные члены необходимо предварительно исключить из группового отношения, фиксированные – удалить вместе с владельцем, необязательные останутся в базе данных.
Исключение из группового отношения – разрыв связи между записью-владельцем и записью-членом.
Ограничения целостности
Подобно иерархической модели обеспечивается только поддержание целостности по ссылкам (владелец – член).