Что такое сетевая база данных
Сетевая модель данных
Материал из ПИЭ.Wiki
Содержание
Историческая справка
В 1971 группа DTBG (Database Task Group) представила в американский национальный институт стандартов отчет, который послужил в дальнейшем основой для разработки сетевых систем управления базами данных. Стандарт сетевой модели был создан в 1975 году организацией CODASYL (Conference of Data System Languages), которая определила базовые понятия модели и формальный язык описания.
Типичным представителем систем, основанных на сетевой модели данных, является СУБД IDMS (Integrated Database Management System), разработанная компанией Cullinet Software, Inc. и изначально ориентированная на использования на мейнфреймах компании IBM. Архитектура системы основана на предложениях DBTG организации CODASYL. В настоящее время IDMS принадлежит компании Computer Associates.
Основные элементы сетевой модели данных
Особенности построения сетевой модели данных
Реализация групповых отношений в сетевой модели осуществляется с использованием указателей (адресов связи или ссылок), которые устанавливают связь между владельцем и членом группового отношения. Запись может состоять в отношениях разных типов (1:1, 1:N, M:N). Заметим, что если один из вариантов установления связи 1:1 очевиден (в запись – владелец отношения, поля которой соответствуют атрибутам сущности, включается дополнительное поле – указатель на запись – член отношения), то возможность представления связей 1:N и M:N таким же образом весьма проблематична. Поэтому наиболее распространенным способом организации связей в сетевых СУБД является введение дополнительного типа записей, полями которых являются указатели.
Преимущества
Недостатки
Операции над данными сетевой модели
Использования сетевой модели
Сетевые модели также создавались для мало ресурсных ЭВМ. Это достаточно сложные структуры, состоящие из «наборов» – поименованных двухуровневых деревьев. «Наборы» соединяются с помощью «записей-связок», образуя цепочки и т.д. При разработке сетевых моделей было выдумано множество «маленьких хитростей», позволяющих увеличить производительность СУБД, но существенно усложнивших последние. Прикладной программист должен знать массу терминов, изучить несколько внутренних языков СУБД, детально представлять логическую структуру базы данных для осуществления навигации среди различных экземпляров, наборов, записей и т.п. Один из разработчиков операционной системы UNIX сказал «Сетевая база – это самый верный способ потерять данные».
СУБД, поддерживающие сетевую модель, широко использовались на вычислительных системах серии IBM 360/370 (ЕС ЭВМ). В качестве примеров таких систем можно указать IDMS, UNIBAD (БАНК), аналоги СЕДАН, СЕТОР. На персональных компьютерах сетевые СУБД не получили широкого распространения. Примером сетевой СУБД для персонального компьютера является db_VISTA III. Отметим, что система db_VISTA реализована на языке С и поэтому является переносимой. Система может эксплуатироваться на ПЭВМ типа IBM PC, SUN, Macintosh.
Пример сетевой базы данных
На рисунке показан простой пример схемы сетевой БД.
На этом рисунке показаны три типа записи: Отдел, Служащие и Руководитель и три типа связи: Состоит из служащих, Имеет руководителя и Является служащим.
В типе связи Состоит из служащих типом записи-предком является Отдел, а типом записи-потомком – Служащие (экземпляр этого типа связи связывает экземпляр типа записи Отдел со многими экземплярами типа записи Служащие, соответствующими всем служащим данного отдела).
В типе связи Имеет руководителя типом записи-предком является Отдел, а типом записи-потомком – Руководитель (экземпляр этого типа связи связывает экземпляр типа записи Отдел с одним экземпляром типа записи Руководитель, соответствующим руководителю данного отдела).
Наконец, в типе связи Является служащим типом записи-предком является Руководитель, а типом записи-потомком – Служащие (экземпляр этого типа связи связывает экземпляр типа записи Руководитель с одним экземпляром типа записи Служащие, соответствующим тому служащему, которым является данный руководитель).
IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.
Сетевая база данных. Сетевая модель данных
Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Продолжаем рубрику Заметки о MySQL, в которой уже были публикации: Нормальные формы и транзитивная зависимость, избыточность данных в базе данных, типы и виды баз данных, настройка MySQL сервера и файл my.ini, MySQL сервер, установка и настройка, Архитектура СУБД и архитектура баз данных. Сегодня я бы хотел более подробно остановиться на сетевых базах данных, в общем-то, в одной из прошлых публикация я практически вскользь упоминал о них, но особой ясности не вносил. Следует сказать, что сетевая база данных относится к теоретико-графовым моделям, про то, что такое графы я постараюсь объяснить в другой публикации, сейчас этот момент не столь важен, но если хотите, то почитайте учебник математики. В этой публикации я постараюсь доступным и понятным языком рассказать о сетевых базах данных и принципе их работы, как обычно всю математику я сведу к минимуму и все умные термины оставлю за пределами данной публикации. Там, где я не смогу что-то объяснить без специфической терминологии, а такие моменты могут появиться, я все обязательно поясню.
Так вот, сетевые базы данных относятся к теоретико-графовым моделям баз данных, помимо сетевых баз данных сюда еще входят иерархические базы данных. Кстати, на основе математики сетевых баз данных существуют различные СУБД, это в основном коммерческие версии. У сетевых баз данных существуют характерные операции навигации, манипуляции и управления данными, с которыми мы и постараемся разобраться в данной публикации. Стоит сказать, что помимо теоретико-графовой модели баз данных существует еще и теоретико-множественная модель, к которой относятся реляционные базы данных, математика которых заложена в MySQL сервере, но до них мы еще обязательно дойдем. А теперь приступим к рассмотрению сетевой модели данных.
Сетевая модель данных
Прежде чем перейти к описанию процессов, которые происходят внутри сетевой модели данных, давайте ознакомимся со структурой сетевой базы данных, чтобы иметь представление о том, с чем предстоит иметь нам дело. Прежде всего, следует разобраться со словом сети, которое присутствует в название: «сетевая модель». Сети – это естественный способ представления отношений между объектами базы данных и связей между этими объектами. Под словом объекты следует понимать таблицы баз данных или сущности. В общем, как вам удобно, так и называйте, вас везде поймут правильно.
Сетевые базы данных опираются на математику графов, конкретнее, сетевую модель данных можно представить в виде ориентированного графа. Направленный граф состоит из узлов и ребер. Узлы направленного графа – это ни что иное, как объекты сетевой базы данных, а ребра такого графа показывают связи между объектами сетевой модели данных, причем ребра показывают не только саму связь, но и тип связи (связь один к одному или связь один ко многим). Взгляните на рисунок, чтобы лучше осознать суть написанного выше:
Структура сетевой базы данных, пример
Стоит заметить, что иерархическая модель баз данных является частным и упрощенным случаем сетевых баз данных.
Структура сетевых баз данных
Сетевые базы данных имеют достаточно простую структуру, во всяком случае, сетевая модель имеет более простую структуру, нежели реляционная модель. Структура сетевых баз данных состоит из четырех компонентов, то есть в сетевой модели используют четыре типа структур данных. Два из которых являются главными и два, если можно так сказать, не главными. Главные типы структур сетевых данных – это запись и набор. Вспомогательные типы структур сетевой модели данных, которые используются для построения главных структур – это элемент данных и агрегат данных. Сама структура сетевой базы данных выглядит так:
Сетевая модель данных, пример
Пять элементов структуры сетевой модели данных образуют саму базу данных. Теперь пройдемся по каждому из типов структуры сетевых баз данных.
Элемент данных – это наименьшая информационная именованная единица данных, доступная пользователю, если провести аналогию с файловой системой, то это поле в файловой системе, если проводит аналогию с реляционной базой данных, то элемент данных – один столбец таблицы реляционной БД. Если говорить точнее, то это подстолбец. Не знаю, как правильно выразиться, вообще, я косноязычен.
Агрегат данных – это следующий уровень обобщения данных сетевой модели. Агрегат данных – это именованная совокупность данных внутри одной записи. Аналогию с реляционными БД тут не проведешь, поскольку агрегат данных – это столбец над столбцами, который объединяет элементы данных по логике их содержимого, следующий рисунок внесет ясность во все выше написанное:
Агрегат данных сетевой модели данных
На данном рисунке видно, что дата – это агрегат данных структуры сетевой модели, а день, месяц и год – это элемент данных сетевой БД.
Запись в сетевой модели данных – это конечный уровень обобщения данных, что-то наподобие таблицы в реляционной базе данных. Каждая запись в сетевой базе данных должна обладать или содержать в себе, как минимум один именованный элемент данных, если элементов внутри записи более одного, то каждый элемент данных должен обладать уникальным форматом.
Давайте разбираться со структурой сетевых баз данных на примере, поскольку так будет более понятно и доступно. Представим, что мы хотим создать запись в сетевую базу данных, назовем ее скажем «Сотрудник», в которую обязательно должен входить агрегат данных, который представлен на рисунке выше, его мы назовем «Дата». В эту запись нам необходимо будет добавить: табельный номер, ФИО и адрес сотрудника. Выглядеть такая запись в сетеовой модели данных будет следующим образом:
Записей сетевой базы данных
Прежде, чем переходить к набору записей, нужно разобраться с тем, что такое тип записи и для чего нужен тип записи в сетевой базе данных. И так, тип записей – это совокупность логически связанных экземпляров записей. Проще сказать – это все записи, которые связаны между собой по смыслу и, которые дополняют друг друга. Если переложить термин тип записей на реальный мир, то это информационная модель (иначе, полное описание) какого-либо объекта из реального мира, например сотрудника фирмы.
Как видно из рисунка выше: в качестве элементов данных сетевой модели могут быть использованы только простые типы, если хотите данных, но это не совсем так. Потому что в качестве агрегатов данных можно использовать сложные типы. Сложные типы в структуре сетевых баз данных бывают двух видов: вектор и повторяющаяся группа. Агрегат типа вектор соответствует линейному набору элементов данных, такой агрегат вы уже видели, он называется у нас «Дата», ну это чтобы вы представляли себе, что такое линейный набор элементов данных.
Агрегат типа повторяющаяся группа – это совокупность векторов данных (то есть несколько векторов). Для большей ясности давайте представим новый агрегат данных, который назовем, ну скажем «Товар»:
Агрегат типа повторяющаяся группа
Товары обычно хранятся на складе или их продают, зачастую по нескольку штук. Я хочу подвести к тому, что агрегат типа повторяющаяся группа – это несколько агрегатов типа вектор, объединенных вместе, допустим, у нас покупают 5 товаров, значит, если наш агрегат «Товар» будет иметь тип повторяющаяся группа, то он будет состоять из 5 агрегатов типа вектор, примерно так.
Перейдем к дальнейшему рассмотрению структуры сетевой модели данных. Набор записей – это именованная двухуровневая иерархическая структура, которая содержит управляемую и управляющую записи. При помощи наборов указывается тип связи между записями. Что это означает? Проще говоря, набор это две записи, между которыми есть связь: один ко многим или один к одному. Представим, что у нас имеется две записи в сетевой базе данных: запись «Сотрудник», структуру которой я привел выше и запись «Отдел», структура которой в данном контексте нам не важна.
Перед нами стоит задача: осуществить логическую связь между двумя этими записями, то есть определить какая запись будет управляемой, а какая управляющей. Логично предположить, что запись «Отдел» должна быть управляющей, поскольку сотрудник работает в отделе, а не отдел в сотруднике. И понятно, что связь между этими записями должна быть один ко многим, потому что отдел один, а сотрудников много, назовем эту связь «Работает». И так, мы приходим к выводу, что набор записей сетевой модели данных определяет: управляющую запись, в нашем случае это «Отдел», подчиненную запись, которую мы назвали «Сотрудник», а так же тип связи между этими записями, которую мы обозвали «Работает». «Работает» — это не только имя связи, но еще и метка, которая именует сам набор данных сетевой модели. Впрочем, рисунок должны внести ясность в мои несколько путаные пояснения:
Набор записей сетевой модели данных
В данном случае связь один ко многим говорит нам о том, что с одним экземпляром записи «Отдел» может быть связано ноль, один или несколько экземпляров записи «Сотрудник». Экземпляр записи – это что-то наподобие кортежа (строки таблицы) из реляционной БД. Использую понятия сетевой модели данных, приведенные выше, можно нарисовать набор записей по-другому. На рисунке можно отобразить логические типы данных для обеих записей, структуру записей сетевой модели данных и указать связь между записями, которую мы обозвали «Работает»:
Теперь обобщим все то, что было написано выше про структуру сетевой базы данных, собственно обобщает все база данных. База данных сетевой модели данных – это именованная совокупность экземпляров записей различного типа и экземпляров наборов, хранящих в себе типы связей между записями. Проще говоря, это все записи и все связи между записями. Что же, мы познакомились со структурой сетевой модели данных, рассмотрели несколько примеров и заодно ознакомились с самыми простыми основами проектирования сетевых баз данных. Жаль, что я ничего не писал про концептуальное проектирование баз данных и концептуальную модель данных. В дальнейшем постараюсь исправить этот недостаток, потому что следующий раздел будет связан с концептуальной моделью.
Преобразование концептуальной модели в сетевую модель данных
На детальное рассмотрение концептуальное модели данных и концептуального проектирования баз данных может потребоваться пара публикаций, а ограничиваться общими словами я не хочу, поэтому сейчас, уважаемые посетители, я буду считать, что вы имеете представление о том, что такое концептуальная модель, если не знаете, то тут два выхода: либо вы ждете соответствующую публикацию на моем блоге, либо пользуетесь поисковыми системами. Думаю, на других сайтах люди пишут не хуже меня, а может быть и лучше. Если вы ничего не знаете про концептуальную модель данных, то смело пропускайте данный раздел.
Сетевую модель данных можно легко получить из концептуальной модели, причем нужно соблюсти всего лишь одно условие: в концептуальной модели данных должны использоваться только бинарные связи, которые принадлежат к типам: «один к одному» или «один ко многим». При этом вместо сущностей концептуальной модели данных следует использовать типы записей сетевой базы данных, собственно, имена сущностей из одной будут являться именами типов записей другой модели данных. Атрибуты, которые есть у сущностей (иначе столбцы таблицы) превращаются в поля записей сетевой модели данных, а связи между сущностями становятся связями между типами записей.
Бинарные связи концептуальной модели данных без затруднений переносятся на сетевую модель данных. Связь один ко многим переносится следующим образом: тип записи со стороны один становится управляющей записью, а тип записи со стороны многим становится подчиненной записью. Для связи один к одному запись владелец и подчиненная запись определяется произвольно.
Управление сетевыми данными
И последнее, о чем я бы хотел поговорить в этой публикации – управление сетевыми данными. Стоит сказать, что для манипулирования и управления данными в сетевой модели данных используется ряд типичных операций (о специфических операциях, присущих различным сетевым СУБД, мы говорить не будем), которые присущи для всех систем управления сетевыми базами данных. Все операции с сетевыми данными можно разделить на две группы: навигационные операции с данными и операции модификации данных.
Навигационные операции сетевых баз данных осуществляют переход по связям, определенных в схеме баз данных, в результате таких переходов определяется запись, которую называют текущей (запись сетевой модели, с которой мы будем работать). К навигационным операциям можно отнести:
При помощи операций модификации сетевых баз данных осуществляется добавление новых записей данных, добавление новых наборов данных, удаление записей данных и наборов записей, модификация агрегатов и элементов данных. Для реализации этих операций в системе текущее состояние детализируется путем запоминания трех его составляющих: текущего набора, текущего типа записи, текущего экземпляра типа записи. В такой ситуации возможны следующие операции:
Сетевые БД
Урок 28. Информатика и ИКТ 11 класс (к учебнику Н. Д. Угриновича)
В данный момент вы не можете посмотреть или раздать видеоурок ученикам
Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет, приобрев в каталоге.
Получите невероятные возможности
Конспект урока «Сетевые БД»
На прошлом уроке мы с вами рассмотрели иерархические базы данных. В частности, узнали, что иерархическая структура – это многоуровневая форма организации объектов со строгой соотнесённостью объектов нижнего уровня определённому объекту верхнего уровня.
Также познакомились с такими элементами иерархической базы данных, как корень, предок, потомок и близнецы.
На этом уроке мы с вами рассмотрим сетевые базы данных, узнаем, чем сетевая структура отличается от иерархической, а также создадим сетевую базу данных на примере.
Сетевая структура – это логическая модель данных, которая является расширением иерархической структуры.
Давайте рассмотрим, чем отличается иерархическая структура от сетевой. Нам показаны два рисунка, на которых изображены иерархическая и сетевая структуры соответственно.
Как мы можем видеть, в иерархической структуре у потомка может быть только один предок. А вот в сетевой структуре у потомка может быть несколько предков.
Т. е. в сетевой структуре нет ограничений на связи между объектами. Это говорит о том, что в ней могут находиться объекты, которые имеют более одного предка. Таким образом они организуют структуру, похожую на сеть. Примером сетевой базы данных является организация информации во Всемирной паутине глобальной компьютерной сети Интернет. Гиперссылки связывают между собой сотни миллионов документов в единую распределённую сетевую базу данных.
Также к примерам сетевой базы данных относится генеалогическое древо, т. к. в данной структуре у потомков имеется по 2 предка. То есть потомки (объекты нижележащего уровня) имеют всегда более одно предка (объекта вышестоящего уровня).
К примерам сетевой базы данных можно отнести и организацию работы на факультете.
Давайте составим схему. На любом факультете есть преподаватели и декан. Изобразим при помощи прямоугольников сам факультет, преподавателей и декана.
Преподаватели и декан работают на факультете. Давайте изобразим это при помощи стрелок.
В свою очередь, любой факультет состоит из преподавателей. Также отобразим это отношение на схеме.
Ну и любой факультет имеет начальника, то есть декана. Снова изобразим это отношение.
Таким образом мы составили с вами сетевую структуру факультета.
Любая сетевая база данных состоит из наборов записей, которые связаны между собой так, что записи могут содержать явные ссылки на другие наборы записей. То есть все объекты сетевой базы данных так или иначе связаны между собой. Так они образуют сеть. Все же связи между записями хранятся непосредственно в самой базе данных.
А сейчас рассмотрим операции, которые могут выполняться над данными в сетевой базе данных.
· Добавить. Внесение (добавление) записи в базу данных. Например, добавление нового преподавателя на факультет при его приёме на работу.
· Извлечь. Извлечение нужной нам записи из базы данных. Например, сведения о каком-либо преподавателе.
· Обновить. Это действие включает в себя изменение значения элементов записи, которая была предварительно извлечена. То есть, например, внесение дополнительных данных о преподавателе.
· Включить в групповое отношение. При выполнении этого действия мы связываем существующую подчинённую запись с записью-владельцем, то есть создаём своеобразную группу. Например, при приёме на работу нового преподавателя после внесения о нём записи в базу данных, мы будем связывать его с факультетом, на котором он работает.
· Исключить из группового отношения. Это действие разрывает связь между записью-владельцем и записью-членом. Такое действие выполняется, например, при увольнении преподавателя.
· Переключить. При помощи этого действия можно связать существующую подчинённую запись с другой записью-владельцем в том же групповом отношении. Например, при переводе преподавателя с одного факультета на другой в этом же университете.
Первоначально сетевая модель данных создавалась как инструмент для программистов. Базовым же языком программирования был выбран COBOL. Первая сетевая модель была предложена в 1969 году и развивалась до 1980-х годов.
К основному достоинству сетевой модели относятся высокая эффективность затрат памяти и оперативность (быстродействие). К основным недостаткам относятся сложность и жёсткость схемы базы, а также сложное понимание. Помимо этого, из-за возможности установки произвольных связей между записями, в этой модели ослаблен контроль целостности.
Возвращаясь же к сравнению иерархической базы данных и сетевой, можно сказать, что они обе обеспечивают достаточно быстрый доступ к данным. Но, в то же время, если нам необходимо получить какие-либо данные из иерархической базы данных, мы должны начинать запрос с корневой вершины. А вот в сетевой базе данных, так как каждая вершина может иметь связь с любой другой, соответственно данные являются более равноправными, то запрос можно отправлять на любой узел этой структуры.
А сейчас давайте составим генеалогическое древо, исходя из следующих данных:
· Иванов Андрей Геннадьевич, 28.05.1946 г. р.
· Иванова (Кулибина) Виктория Сергеевна, 05.08.1947 г. р.
· Кулаго Сергей Евгеньевич, 01.01.1947 г. р.
· Кулаго (Каменева) Елена Анатольевна, 19.04.1948 г. р.
· Сергеев Константин Алексеевич, 26.06.1955 г. р.
· Сергеева (Мирская) Анна Александровна, 06.09.1956 г. р.
· Иванов Юрий Андреевич, 04.05.1967 г. р.
· Иванова (Кулаго) Татьяна Сергеевна, 17.03.1968 г. р.
· Сергеев Виталий Валерьевич, 13.11.1977 г. р.
· Сергеева (Кулаго) Наталья Сергеевна, 06.12.1977 г. р.
· Иванова Ольга Юрьевна, 03.08.1991 г. р.
· Иванова Мария Юрьевна, 31.09.1998 г. р.
· Сергеева Екатерина Витальевна, 19.04.1995 г. р.
· Сергеева Дарья Витальевна, 17.03.2000 г. р.
Андрей и Виктория являются родителями Юрия. Сергей и Елена являются родителями Татьяны и Натальи. Константин и Анна – родители Виталия.
Юрий и Татьяна являются родителями Ольги и Марии. Наталья и Виталий – родители Екатерины и Дарьи.
Исходя из этих данных, давайте построим генеалогическое древо.
У нас будет шесть вершин: Андрей, Виктория, Сергей, Елена, Константин и Анна. А также изобразим при помощи стрелок, что Андрей и Виктория, Сергей и Елена, Константин и Анна являются семьями.
Далее у нас сказано, что Андрей и Виктория являются родителями Юрия. Изобразим на втором уровне Юрия и проведём к нему стрелки от Андрея и Виктории.
Сергей и Елена являются родителями Татьяны и Натальи. Проведём стрелки от родителей к дочерям.
Также у нас сказано, что Юрий и Татьяна являются родителями Ольги и Марии. Исходя из этого следует, что Юрий и Татьяна являются мужем и женой.
В условии также сказано, что Константин и Анна являются родителя Виталия. Проведём стрелки от родителей к сыну.
Также у нас сказано, что Наталья и Виталий являются родителями Екатерины и Дарьи, соответственно они являются мужем и женой. Изобразим это отношение на схеме.
У нас осталось четыре человека: Ольга, Мария, Екатерина и Дарья.
Ольга и Мария являются дочерями Юрия и Татьяны. Изобразим это на схеме при помощи стрелок.
Екатерина и Дарья являются дочерями Натальи и Виталия. Также проведём стрелки от родителей к дочерям.
Подпишем каждого из членов семьи, а также даты их рождения.
Мы с вами составили генеалогическое древо семьи. Данное древо является примером сетевой структуры, так как у нас потомки имеют по два предка. Например, Юрий является потомком Андрея и Виктории. Или же Екатерина является потомком Натальи и Виталия.
Если же более подробно рассматривать нашу схему, то мы можем видеть, что Андрей, Виктория, Сергей, Елена, Константин и Анна находятся на первом уровне. Юрий, Татьяна, Наталья и Виталий находятся на втором уровне. А Ольга, Мария, Екатерина и Дарья находятся на третьем уровне.
Также, исходя из этой схемы можно сказать, что те, кто находятся на первом уровне, являются дедушками и бабушками по отношению к Ольге, Марии, Екатерине и Дарье. Те, кто находятся на втором уровне, являются родителями.
Если же обратить внимание на данные, которые нам были предоставлены изначально, то мы можем заметить, что у некоторых членов семьи женского рода две фамилии, одна из которых написана в скобках. Обычно так пишется девичья фамилия тех, кто замужем.
Каждый из вас может построить генеалогическое древо своей семьи, причём количество предков и потомков может быть намного больше, чем в представленном примере.
А сейчас пришла пора подвести итоги урока.
На этом уроке мы с вами познакомились с сетевой структурой. Узнали, чем отличается иерархическая структура от сетевой. Помимо этого, мы построили генеалогическое древо семьи.