3.2.Сетевая модель данных
3.2.1.Структура данных.
На разработку этого стандарта большое влияние оказал американский ученый
Ч.Бахман. Основные принципы сетевой модели данных были разработны в середине
60-х годов, эталонный вариант сетевой модели данных описан в отчетах рабочей
группы по языкам баз данных (COnference on DAta SYstem Languages) CODASYL
(1971 г.).
Сетевая модель данных определяется в тех же терминах, что и иерархическая.
Она состоит из множества записей, которые могут быть владельцами или членами
групповых отношений. Связь между между записью-владельцем и записью-членом
также имеет вид 1:N.
Основное различие этих моделей состоит в том, что в сетевой модели запись
может быть членом более чем одного группового отношения. Согласно
этой модели каждое групповое отношение именуется и проводится различие
между его типом и экземпляром. Тип группового отношения задается его именем
и определяет свойства общие для всех экземпляров данного типа. Экземпляр
группового отношения представляется записью-владельцем и множеством (возможно
пустым) подчиненных записей. При этом имеется следующее ограничение: экземпляр
записи не может быть членом двух экземпляров групповых отношений одного
типа (т.е. сотрудник из примера в п.3.1,
например, не может работать в двух отделах).
Иерархическая структура из п.3.1. преобразовывается
в сетевую следующим образом (см. рис. 3.2):
-
древья (a) и (b), показанные на рис. 3.1, заменяются одной сетевой структурой,
в которой запись СОТРУДНИК входит в два групповых отношения;
-
для отображения типа M:N вводится запись СОТРУДНИК_КОНТРАКТ, которая не
имеет полей и служит только для связи записей КОНТРАКТ и СОТРУДНИК, см. рис. 3.2.(Отметим,
что в этой записи может храниться и полезная информация, например, доля
данного сотрудника в общем вознаграждении по данному контракту.)
Рис. 3.2
Каждый экземпляр группового отношения характеризуется следующими признаками:
-
способ упорядочения подчиненных записей:
-
произвольный,
-
хронологический /очередь/,
-
обратный хронологический /стек/,
-
сортированный.
Если запись объявлена подчиненной в нескольких групповых отношениях, то
в каждом из них может быть назначен свой способ упорядочивания.
-
режим включения подчиненных записей:
-
автоматический - невозможно занести в БД запись без того, чтобы она была
сразу же закреплена за неким владельцем;
-
ручной - позволяет запомнить в БД подчиненную запись и не включать ее немедленно
в экземпляр группового отношения. Эта операция позже инициируется пользователем).
-
режим исключения Принято выделять три класса членства подчиненных
записей в групповых отношениях:
-
Фиксированное. Подчиненная запись жестко связана с записью владельцем
и ее можно исключить из группового отношения только удалив. При удалении
записи-владельца все подчиненные записи автоматически тоже удаляются. В
рассмотренном выше примере фиксированное членство предполагает групповое
отношение "ЗАКЛЮЧАЕТ" между записями "КОНТРАКТ" и "ЗАКАЗЧИК", поскольку
контракт не может существовать без заказчика.
-
Обязательное. Допускается переключение подчиненной записи на другого
владельца, но невозможно ее существование без владельца. Для удаления записи-владельца
необходимо, чтобы она не имела подчиненных записей с обязательным членством.
Таким отношением связаны записи "СОТРУДНИК" и "ОТДЕЛ". Если отдел расформировывается,
все его сорудники должны быть либо переведены в другие отделы, либо уволены.
-
Необязательное. Можно исключить запись из группового отношения,
но сохранить ее в базе данных не прикрепляя к другому владельцу. При удалении
записи-владельца ее подчиненные записи - необязательные члены сохраняются
в базе, не участвуя более в групповом отношении такого типа. Примером такого
группового отношения может служить "ВЫПОЛНЯЕТ" между "СОТРУДНИКИ" и "КОНТРАКТ",
поскольку в организации могут существовать работники, чья деятельность
не связана с выполненинем каких-либо договорных обязательств перед заказчиками.
3.2.2.Операции над данными.
-
ДОБАВИТЬ - внести запись в БД и, в зависимости от режима включения,
либо включить ее в групповое отношение, где она объявлена подчиненной,
либо не включать ни в какое групповое отношение.
-
ВКЛЮЧИТЬ В ГРУППОВОЕ ОТНОШЕНИЕ - связать существующую подчиненную
запись с записью-владельцем.
-
ПЕРЕКЛЮЧИТЬ - связать существующую подчиненную запись с другой записью-владельцем
в том же групповом отношении.
-
ОБНОВИТЬ - изменить значение элементов предварительно извлеченной
записи.
-
ИЗВЛЕЧЬ - извлечь записи последовательно по значению ключа, а также
используя групповые отношения - от владельца можно перейти к записям -
членам, а от подчиненной записи к владельцу набора.
-
УДАЛИТЬ - убрать из БД запись. Если эта запись является владельцем
группового отношения, то анализируется класс членства подчиненных записей.
Обязательные члены должны быть предварительно исключены из группового отношения,
фиксированные удалены вместе с владельцем, необязательные останутся в БД.
ИСКЛЮЧИТЬ ИЗ ГРУППОВОГО ОТНОШЕНИЯ - разорвать связь между записью-владельцем
и записью-членом.
3.2.3.Ограничения целостности.
Как и в иерархической модели обеспечивается только поддержание целостности по ссылкам
(владелец отношения - член отношения).
Литература:
Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. -М:
"Финансы и статистика", 1989.
Следующая глава: 4.Реляционная модель данных.
Введение в базы данных. (c) Зеленков
Ю.А. (yz@yars.free.net) 1997
г.
(c) Центр Интернет ЯрГУ