База данных – это упорядоченное хранение какой-либо информации. То есть, информация хранится в упорядоченном или систематизированном виде. Видов систематизации, упорядочивания и хранения информации может быть множество. Каждый из способов хранения информации отвечает каким-либо специфическим требованиям или предназначен для выполнения каких-либо определенных действий [4].
Основой любой базы данных является модель данных. Модель данных – это совокупность структур данных и операций их обработки. С ее помощью могут быть представлены информационные объекты и их взаимосвязи. Выделяют три основных типа моделей данных: иерархическую, сетевую и реляционную.
Иерархическая модель представляет собой совокупность элементов, расположенных в порядке их подчинения от общего к частному.
То есть, в иерархической БД каждый объект представляется в виде определенной сущности, то есть, у этой сущности могут быть дочерние элементы, родительские элементы, а у тех дочерних могут быть еще дочерние элементы, но есть один объект, с которого все начинается. Получается своеобразное структурное дерево (граф).
Сетевые базы данных, являются своеобразной модификацией иерархических баз данных. Отличаются от иерархических лишь тем, что у дочернего элемента может быть несколько предков, то есть, элементов стоящих выше него. Ниже на рисунке 1 приведен пример структуры сетевых баз данных.
Главной особенностью реляционных баз данных является, то, что объекты внутри таких баз данных хранятся в виде набора двумерных таблиц. То есть, таблица состоит из набора столбцов, в котором может указываться: название, тип данных (дата, число, строка, текст и так далее). Еще одной важной особенность реляционных БД является, то, что число столбцов фиксировано, то есть, структурабазы данных известна заранее, а вот число строк или рядов в реляционных базах данных ничем не ограничено, если говорить грубо, то строки в реляционных базах данных и есть объекты, которые хранятся в базе данных [2].
ИСТОРИЯ ВОЗНИКНОВЕНИЯ СЕТЕВОЙ МОДЕЛИ ДАННЫХ. ОПИСАНИЕ
На разработку этого стандарта большое влияние оказал американский ученый Чарльз Уильям Бахман. Основные принципы сетевой модели данных были разработаны в середине 60-х годов, эталонный вариант сетевой модели данных описан в отчетах рабочей группы по языкам баз данных (COnference on DAta SYstem Languages) CODASYL в 1971г.
Наиболее известной из таких систем была IDMS корпорации Computer Associates International, Inc [7].
Сетевая модель данных - это логическая модель данных, представляющая их сетевыми структурами типов записей и связанные отношениями мощности один-к-одному или один-ко-многим.
Сети – это естественный способ представления отношений между объектами базы данных и связей между этими объектами. Под словом объекты следует понимать таблицы баз данных или сущности.
Сетевые базы данных опираются на математику графов, конкретнее, сетевую модель данных можно представить в виде ориентированного графа. Направленный граф состоит из узлов и ребер. Узлы направленного графа – это ни что иное, как объекты сетевой базы данных, а ребра такого графа показывают связи между объектами сетевой модели данных, причем ребра показывают не только саму связь, но и тип связи (связь один к одному или связь один ко многим).
Рисунок 1 – Пример структуры сетевой базы данных
В отличие от реляционной модели, связи в ней моделируются наборами, которые реализуются с помощью указателей. Сетевые модели данных являются расширенной версией иерархической модели, однако основным отличием является то, что в сетевых моделях данных имеются указатели в обоих направлениях, которые соединяют родственную информацию.Сетевую модель можно представить, как граф узлами, которого является запись, а ребрами - набор. Сегменты данных в сетевых БД могут иметь множественные связи с сегментами старшего уровня. При этом направление и характер связи в сетевых БД не являются столь очевидными, как в случае иерархических БД. Поэтому имена и направление связей должны идентифицироваться при описании БД.
СТРУКТУРА СЕТЕВЫХ БАЗ ДАННЫХ
Сетевые базы данных имеют достаточно простую структуру. Структура состоит из четырех компонентов, то есть в сетевой модели используют четыре типа структур данных. Два из которых являются главными и два, если можно так сказать, не главными. Главные типы структур сетевых данных – это запись и набор [6]. Вспомогательные типы структур сетевой модели данных, которые используются для построения главных структур – это элемент данных и агрегат данных, на рисунке 2 представлена вся структура сетевых БД:
Рисунок 2 – Пример структуры сетевых баз данных
Рассмотрим каждую структуру более подробно:
Элемент данных – это наименьшая информационная именованная единица данных, доступная пользователю, если провести аналогию с файловой системой, то это поле в файловой системе, а если проводить аналогию с реляционной базой данных, то элемент данных – один столбец таблицы реляционной БД. Если говорить точнее, то это подстолбец.
Агрегат данных – это именованная совокупность данных внутри одной записи. Аналогию с реляционными БД тут не проведешь, поскольку агрегат данных – это столбец над столбцами, который объединяет элементы данных по логике их содержимого, для наглядности выше сказанного, рассмотрим рисунок 3:
Дата |
||
День |
Месяц |
Год |
Рисунок 3 – Пример агрегата данных сетевой модели данных
На данном рисунке видно, что дата – это агрегат данных структуры сетевой модели, а день, месяц и год – это элемент данных сетевой БД.
Запись в сетевой модели данных – это конечный уровень обобщения данных, что-то наподобие таблицы в реляционной базе данных. Каждая запись в сетевой базе данных должна обладать или содержать в себе, как минимум один именованный элемент данных, если элементов внутри записи более одного, то каждый элемент данных должен обладать уникальным форматом.
Сотрудник |
||||||
Табельный № |
ФИО |
Дата |
Адрес |
|||
День |
Месяц |
Год |
Рисунок 4 – Пример записи сетевой базы данных
Прежде, чем переходить к набору записей, нужно разобраться с тем, что такое тип записи и для чего нужен тип записи в сетевой базе данных. И так, тип записей – это совокупность логически связанных экземпляров записей. Проще сказать – это все записи, которые связаны между собой по смыслу и, которые дополняют друг друга. Если переложить термин тип записей на реальный мир, то это информационная модель (иначе, полное описание) какого-либо объекта из реального мира, например сотрудника фирмы.
Как видно из рисунка 4: в качестве элементов данных сетевой модели могут быть использованы только простые типы, если хотите данных, но это не совсем так. Потому что в качестве агрегатов данных можно использовать сложные типы. Сложные типы в структуре сетевых баз данных бывают двух видов: вектор и повторяющаяся группа. Агрегат типа вектор соответствует линейному набору элементов данных, такой агрегат уже был представлен, как «Дата» (рисунок 3).
Агрегат типа повторяющаяся группа – это совокупность векторов данных (то есть несколько векторов). Для большей ясности представим новый агрегат данных на рисунке 5, который назовем «Товар»:
Товар |
||
Код товара |
Кол-во товара |
Наименование товара |
Повторяющаяся группа |
Рисунок 5 – Пример агрегата типа повторяющаяся группа
Товары обычно хранятся на складе или их продают, обычно по нескольку штук. То есть имеется в виду, что агрегат типа повторяющаяся группа – это несколько агрегатов типа вектор, объединенных вместе. Предположим, у нас покупают 5 товаров, значит, если наш агрегат «Товар» будет иметь тип повторяющаяся группа, то он будет состоять из 5 агрегатов типа вектор.
Перейдем к дальнейшему рассмотрению структуры сетевой модели данных.
Набор записей – это именованная двухуровневая иерархическая структура, которая содержит управляемую и управляющую записи. При помощи наборов указывается тип связи между записями. Что это означает? Проще говоря, набор - это две записи, между которыми есть связь: один-ко-многим или один-к-одному. Допустим, что у нас имеется две записи в сетевой базе данных: запись «Сотрудник», структуру которой приведена выше на рисунке 4 и запись «Отдел», структура которой в данном контексте нам не важна.
Перед нами стоит задача: осуществить логическую связь между двумя этими записями, то есть определить какая запись будет управляемой, а какая управляющей. Логично предположить, что запись «Отдел» должна быть управляющей, поскольку сотрудник работает в отделе, а не отдел в сотруднике. И понятно, что связь между этими записями должна быть один-ко-многим, потому что отдел один, а сотрудников много, назовем эту связь «Работа». И так, мы приходим к выводу, что набор записей сетевой модели данных определяет: управляющую запись, в нашем случае это «Отдел», подчиненную запись, которую мы назвали «Сотрудник», а так же тип связи между этими записями, которую мы обозвали «Работа». «Работа» — это не только имя связи, но еще и метка, которая именует сам набор данных сетевой модели. Впрочем, рисунок должны внести ясность в мои несколько путаные пояснения:
Рисунок 6 – Пример набора записей сетевой модели данных
В данном случае связь один-ко-многим говорит нам о том, что с одним экземпляром записи «Отдел» может быть связано ноль, один или несколько экземпляров записи «Сотрудник». Экземпляр записи – это что-то наподобие кортежа (строки таблицы) из реляционной БД. Используя понятия сетевой модели данных, приведенные выше, можно нарисовать набор записей по-другому. На рисунке можно отобразить логические типы данных для обеих записей, структуру записей сетевой модели данных и указать связь между записями, которую мы назвали «Работа»:
Теперь обобщим все то, что было написано выше про структуру сетевой базы данных, собственно обобщает все база данных.
База данных сетевой модели данных – это именованная совокупность экземпляров записей различного типа и экземпляров наборов, хранящих в себе типы связей между записями. Проще говоря, это все записи и все связи между записями [3].
Таким образом мы познакомились со структурой сетевой модели данных, рассмотрели несколько примеров и ознакомились с самыми простыми основами проектирования сетевых баз данных.
ОПЕРАЦИИ НАД ДАННЫМИ
Навигационные операции сетевых баз данных осуществляют переход по связям, определенных в схеме баз данных, в результате таких переходов определяется запись, которую называют текущей (запись сетевой модели, с которой мы будем работать). К навигационным операциям можно отнести:
Найти конкретную запись в наборе однотипных записей и сделать ее текущей;
Перейти от записи-владельца к записи-члену в некотором наборе;
Перейти к следующей записи в некоторой связи;
Перейти от записи-члена к владельцу по некоторой связи.
При помощи операций модификации сетевых баз данных осуществляется добавление новых записей данных, добавление новых наборов данных, удаление записей данных и наборов записей, модификация агрегатов и элементов данных. Для реализации этих операций в системе текущее состояние детализируется путем запоминания трех его составляющих: текущего набора, текущего типа записи, текущего экземпляра типа записи. В такой ситуации возможны следующие операции:
Извлечь текущую запись в буфер прикладной программы для обработки;
Заменить в извлеченной записи значения указанных элементов данных на заданные новые их значения;
Запомнить запись из буфера в БД;
Создать новую запись;
Уничтожить запись;
Включить текущую запись в текущий экземпляр набора;
Исключить текущую запись из текущего экземпляра набора.
ПРЕОБРАЗОВАНИЕ КОНЦЕПТУАЛЬНОЙ МОДЕЛИ В СЕТЕВУЮ МОДЕЛЬ ДАННЫХ
Сетевую модель данных можно легко получить из концептуальной модели, причем нужно соблюсти всего лишь одно условие: в концептуальной модели данных должны использоваться только бинарные связи, которые принадлежат к типам: «один-к-одному» или «один-ко-многим». При этом вместо сущностей концептуальной модели данных следует использовать типы записей сетевой базы данных, собственно, имена сущностей из одной будут являться именами типов записей другой модели данных. Атрибуты, которые есть у сущностей (иначе столбцы таблицы) превращаются в поля записей сетевой модели данных, а связи между сущностями становятся связями между типами записей.
Бинарные связи концептуальной модели данных без затруднений переносятся на сетевую модель данных. Связь один-ко-многим переносится следующим образом: тип записи со стороны один становится управляющей записью, а тип записи со стороны многим становится подчиненной записью. Для связи один-к-одному запись владелец и подчиненная запись определяется произвольно.
ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ
Механизмы поддержания целостности данных в базах данных любой СУБД нужны для того, чтобы избежать всевозможных ошибок, связанных с манипуляцией данными, эти ошибки называются аномалиями:
Аномалия добавления данных в таблицу;
Аномалия модификации данных таблицы;
Аномалия удаления данных из таблицы.
С аномалиями баз данных можно бороться по-разному, например, привести базу данных к третьей нормальной форме или воспользоваться механизмами поддержания целостности данных, реализованными в СУБД. На самом деле, ни одна СУБД в мире не знает о том, что такое нормальная форма, поэтому за нормализацию отвечает разработчик баз данных [5].
ПРЕИМУЩЕСТВА И НЕДОСТАТКИ СЕТЕВОЙ МОДЕЛИ ДАННЫХ
Достоинством сетевой модели данных является ее быстродействие в отличие от иерархической БД, гибкость в хранении данных, универсальность в сравнении с другими моделями, а также возможность доступа к данным через значения нескольких отношений.
Среди недостатков сетевых СУБД следует особо выделить проблему обеспечения сохранности информации в БД, а также достаточно сложную структуру памяти.
Еще один немаловажный недостаток сетевой модели данных – высокая жесткость схемы БД. При изменении структуры БД ведет за собой перестройку всей базы данных. То есть, при изменении структуры данных нужно изменять и приложение.
ЗАКЛЮЧЕНИЕ
С ростом популярности СУБД появилось множество различных моделей данных. У каждой из которых есть как плюсы, так и минусы, которые сыграли ключевую роль в развитии реляционной модели данных, появившейся благодаря стремлению упростить и упорядочить первые модели данных.
Современные базы данных ориентированы на определенную предметную область и организованы на основе некоторого подмножества данных. Модели данных используются, как для концептуального, так и для логического и физического представления данных.
Основное различие между этими моделями данных состоит в способах описания взаимодействий между объектами и атрибутами.
Возможности баз данных полезны в областях, связанных с долговременным управлением информацией, таких как электронные библиотеки и хранилища данных, и так далее.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Акулов О.А. Информатика: базовый курс: Учеб. пособие для студентов вузов / О.А. Акулов, Н.В. Медведев.- 2-е изд., испр. и доп.- М.: Омега-Л, 2005.
Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. -М: "Финансы и статистика", 2009.
Алексеев Е.Г., Богатырев С.Д. Информатика: учебник – Саранск: Морд. гос. ун-т, 2009.
Золотова С.И. Практикум по Access. / С.И. Золотова – М.: Финансы и статистика, 2003.
Голосов А.О. Аномалии в реляционных базах данных // СУБД. - 1986. - №3.
Дж. Ульман, Дж. Видом. Введение в системы баз данных. – М.: Лори.- 2000.
Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: Питер, 2002.