Три базовые модели данных
Итак, система баз данных должна иметь возможность представлять два типа объектов: объекты и связи. причем между ними не существует принципиального различия: связь – специальный вид объектов. Три подхода к моделированию данных (иерархический, сетевой и реляционный) отличаются способом, которым они позволяют пользователю представлять и обрабатывать связи.
9.1.1 Иерархическая модель данных
Первая информационная система, использующая базы данных, появившаяся в середине 60-х 20 века, была основана на иерархической модели. Иерархическая модель – модель данных, в которой связи между данными имеют вид иерархий. Исторически эти модели появились раньше, и в настоящий момент они используются реже, чем современные реляционные модели данных. Однако до сих пор существуют системы, работающие на основе этих моделей, а одна из концепций развития объектно-ориентированных баз данных предполагает объединение принципов сетевой модели с концепцией реляционной. Появление иерархической модели связано с тем, что в реальном мире очень многие связи соответствуют иерархии, когда один объект выступает как родительский, а с ним может быть связано множество подчиненных объектов. Иерархия проста и естественна в отображении взаимосвязи между классами объектов.
Основными информационными единицами в иерархической модели являются: база данных (БД), сегмент и поле. Поле данных определяется как минимальная, неделимая единица данных, доступная пользователю с помощью СУБД. Сегмент в терминологии Американской Ассоциации по базам данных DBTG (Data Base Task Group) называется записью, при этом в рамках иерархической модели определяются два понятия: тип сегмента или тип записи и экземпляр сегмента или экземпляр записи.
Тип сегмента — это поименованная совокупность типов элементов данных, в него входящих. Экземпляр сегмента образуется из конкретных значений полей или элементов данных, в него входящих. Каждый тип сегмента в рамках иерархической модели образует некоторый набор однородных записей. Для возможности различия отдельных записей в данном наборе каждый тип сегмента должен иметь ключ или набор ключевых атрибутов (полей, элементов данных). Ключом называется набор элементов данных, однозначно идентифицирующих экземпляр сегмента. В иерархической модели сегменты объединяются в ориентированный древовидный граф. При этом полагают, что направленные ребра графа отражают иерархические связи между сегментами: каждому экземпляру сегмента, стоящему выше по иерархии и соединенному с данным типом сегмента, соответствует несколько (множество) экземпляров данного (подчиненного) типа сегмента. Тип сегмента, находящийся на более высоком уровне иерархии, называется логически исходным по отношению к типам сегментов, соединенным с данным направленными иерархическими ребрами, которые в свою очередь называются логически подчиненными по отношению к этому типу сегмента. Иногда исходные сегменты называют сегментами-предками, а подчиненные сегменты называют сегментами-потомками.
На концептуальном уровне определяется понятие схемы базы данных в терминологии иерархической модели. Схема иерархической базы данных представляет собой совокупность отдельных деревьев, каждое дерево в рамках модели называется физической базой данных. Каждая физическая база данных удовлетворяет следующим иерархическим ограничениям:
- в каждой физической базе данных существует один корневой сегмент, то есть сегмент, у которого нет логически исходного (родительского) типа сегмента;
- каждый логически исходный сегмент может быть связан с произвольным числом логически подчиненных сегментов;
- каждый логически подчиненный сегмент может быть связан только с одним логически исходным (родительским) сегментом.
Между экземплярами сегментов также существуют иерархические связи. Экземпляры-потомки одного типа, связанные с одним экземпляром сегмента-предка, называют «близнецами».
В иерархической базе данных файлы связываются между собой физическими указателями. Указатель–физический адрес, обозначающий место хранения записи на диске.
9.1.2 Сетевая модель данных
У иерархической модели есть недостаток, так как не все отношения можно представить в виде иерархии. Сеть–отношения между данными, когда каждая запись может быть подчинена записям более чем из одного файла. В связи с очевидной необходимостью обрабатывать такие отношения, в конце 60- годов (20 века) появились сетевые системы управления базами данных. Как и в иерархических системах, в сетевых системах баз данных для связывания данных использовались предопределенные физические указатели. В иерархии у каждого потомка(подчиненной записи в файле) может быть только один предок(подчиняющая запись в иерархии). Сетевые модели поддерживали более сложные отношения между записями из разных файлов.
Базовыми объектами модели являются: элемент данных; агрегат данных; запись; набор данных,
Элемент данных — то же, что и в иерархической модели, то есть минимальная информационная единица, доступная пользователю с использованием системы управления базами данных.
Агрегат данных соответствует следующему уровню обобщения в модели. В модели определены агрегаты двух типов: агрегат типа вектор и агрегат типа повторяющаяся группа. Агрегат данных имеет имя, и в системе допустимо обращение к агрегату по имени.
Записью называется совокупность агрегатов или элементов данных, моделирующая некоторый класс объектов реального мира. Понятие записи соответствует понятию «сегмент» в иерархической модели. Для записи, так же как и для сегмента, вводятся понятия типа записи и экземпляра записи. Следующим базовым понятием в сетевой модели является понятие «Набор». Набором называется двухуровневый граф, связывающий отношением «один-ко-многим» два типа записи.
Набор фактически отражает иерархическую связь между двумя типами записей. Родительский тип записи в данном наборе называется владельцем набора, а дочерний тип записи — членом того же набора. Для любых двух типов записей может быть задано любое количество наборов, которые их связывают. Фактически наличие подобных возможностей позволяет промоделировать отношение «многие-ко-многим» между двумя объектами реального мира, что выгодно отличает сетевую модель от иерархической. В рамках набора возможен последовательный просмотр экземпляров членов набора, связанных с одним экземпляром владельца набора. Между двумя типами записей может быть определено любое количество наборов: например, можно построить два взаимосвязанных набора. Существенным ограничением набора является то, что один и тот же тип записи не может быть одновременно владельцем и членом набора.
Таким образом, использование физических указателей позволяет извлекать данные, связанные определенными отношениями. Однако, эти отношения должны быть определены до запуска системы. Извлечь данные на основе других отношений было сложно или даже невозможно.
9.1.3 Переход к реляционной модели
Реляционная модель основывается на математических принципах, вытекающих непосредственно из теории множеств и логики предикатов. Эти принципы впервые были применены в области моделирования данных доктором Е.Ф.Коддом (в то время работавшим в IBM). В 1970 г. доктор опубликовал революционную по содержанию статью, которая всерьез поколебала устоявшиеся представления о базах данных. Он выдвинул идею, что данные нужно связывать в соответствии с их внутренними логическими взаимоотношениями, а не физическими указателями. Таким образом, пользователи смогут комбинировать данные из разных источников, если логическая информация, необходимая для такого комбинирования, присутствует в исходных данных. Это открыло новые возможности для информационно-управляющих систем, поскольку запросы к базам данных теперь не были ограничены физическими указателями. Информационные системы, использующие базы данных, которые поддерживают извлечение данных на основе логических связей, позволяют легко получить ответы на множество вопросов. В своей статье Кодд предложил простую модель данных, согласно которой все данные сведены в таблицы, состоящие из строк и столбцов. Эти таблицы получили название реляций, а модель стала называться реляционной.
Реляционная модель определяет способ представления данных (структуру данных), методы защиты данных (целостность данных), а также операции, выполняемые с данными (манипулирование данными). Распространено заблуждение, что реляционная модель названа так потому, что она определяет отношения между таблицами. На самом деле название этой модели происходит от отношений (реляций), лежащих в ее основе. В рамках реляционной модели данные представлены в виде отношений на концептуальном уровне, однако при этом не дается никаких указаний, каким образом данные будут реализованы на физическом уровне.
Рассматривая данные с концептуальной, а не физической точки зрения, Кодд предложил еще одну революционную идею. В реляционных системах баз данных целые файлы данных могут обрабатываться одной командой, тогда как в традиционных системах за один раз обрабатывается только одна запись. Метод разделения концептуального и логического уровней произвел переворот в области программирования баз данных. Подход Кодда чрезвычайно повысил эффективность программирования в базах данных. Ранее программирование баз данных сводилось в основном к написанию программного кода для физического управления устройствами, предназначенными для хранения данных. Логический подход к данным сделал также возможным создание языков запросов, более доступных для пользователей, не являющихся специалистами по компьютерным технологиям. Конечно, очень трудно создать язык, которым могли бы пользоваться все, независимо от опыта работы с компьютером, однако реляционные языки запросов сделали базы данных доступными для более широкого круга пользователей, чем раньше.
Публикация работ Кодда в начале семидесятых годов прошлого века вызвала взрыв активности, как среди ученых, так и среди разработчиков коммерческих систем по созданию реляционной системы управления базами данных. Результатом этой деятельности явилось создание во второй половине семидесятых реляционных систем, которые поддерживали такие языки как (Structured Query Language - SQL, язык структурированных запросов), Query Language (Quel, язык запросов), и Query-by-Example (QBE, запросы по образцу). Сегодня реляционные базы данных рассматриваются как стандарт для современных коммерческих систем работы с данными.