Сайт Информационных Технологий

2.2.1. Системы управления реляционными базами данных (СУРБД)

Все реляционные базы данных используют в качестве модели хранения данных двумерные таблицы. Эта модель выбрана потому что она в основном знакома всем пользователям и рассматривается как "естественный" путь представления данных. Любая система данных, не имеет значения какой сложности, может быть сведена к набору таблиц (или "отношений" в терминологии СУРБД) с некоторой избыточностью. Избыточность контролируется путем приведения отношений к канонической "нормальной" форме, которая минимизирует ненужную избыточность без уменьшения связей между элементами данных.

Каждое отношение (таблица) может быть представлено в виде прямоугольного массива со следующими свойствами:

  1. Каждая ячейка в таблице представляет точно один элемент данных. Нет повторяющихся групп;
  2. Каждая таблица имеет однородные столбцы. Все элементы в любом из столбцов одного и того же вида;
  3. Каждому столбцу назначено определенное имя;
  4. Все строки различны. Дублировать строки не разрешается;
  5. И строки, и столбцы не зависят от последовательности. Просмотр в различной последовательности не может изменить информационное содержание отношения;
  6. Каждая строка олицетворяет уникальный элемент данных, который ею и описывается;
  7. Столбцы представляют собой отдельные куски информации (атрибуты данных), которые известны о данном элементе. Строки обычно называют записями, а столбцы - полями.

Кроме того, для обработки отношений разрешены только следующие операции:

  1. Добавить и Удалить запись (Редактирование косвенно разрешено в виде конкатенации операций "Добавить" и "Удалить"),
  2. Соединение (при котором временное отношение создается путем соединения информации двух отношений, используя общие поля),
  3. Выборка (в которой выбирается подмножество записей в отношении, основываясь на определенных значениях или ряде значений в выбранных полях).

Другие операции с данными обычно не поддерживаются в базах с реляционной структурой. Добавление произвольных данных, которые, например, не соответствуют ни одному полю в описании данных, запрещено. Добавление поля для произвольных данных потребовало бы перестройки (реструктурирования) базы данных. А этот, зачастую очень длительный, процесс может выполняться только когда базой данных никто не пользуется.

Вообще, лишь немногие реальные базы данных могут быть описаны при помощи единственной таблицы. Большинство приложений используют множество таблиц, которые содержат столбцы (поля) с одинаковым именем. Эти общие данные позволяют объединяя две (или несколько) таблицы, строить осмысленные ассоциации. Лучше всего это иллюстрируется примером (далее рассмотрим пример, который лучше всего раскрывает все достоинства и недостатки рассматриваемых технологий). Рассмотрим два отношения "Служащий" и "Отдел", показанные на рис.2.1.

Рис 2.1. Объединение двух отношений через общее поле

В этом примере поля Номер Служащего и Номер Отдела выделены; это указывает на то, что эти поля - первичные ключи. Это означает, что элементы данных в этих полях единственным образом определяют запись (т.е. никакие две записи не имеют одинакового элемента данных в ключевом поле). Более того, поле N отдела обнаруживается в обеих таблицах. Это позволяет объединить две таблицы таким образом, чтобы, например, определять Название отдела для любого заданного Служащего.

Простой реальный пример может потребовать более сложной структуры. Пусть Служащий является членом более чем одного Отдела. Правила соединения в реляционных базах данных не разрешают связей "многие-ко-многим". Чтобы представить отношение с такими связями (например, каждый Отдел имеет многочисленных Служащих и каждый Служащий может быть членом Многочисленных Отделов), нам надо создать отдельное отношение, которое является гибридом двух столбцов (рис. 2.2).

Рис. 2.2. Объединение двух отношений через третье отношение

Здесь отношение "Назначение" содержит запись для каждого отдела, сотрудником которого является служащий. То есть, если Служащий работает в Отделе, то соответствующие Номер Служащего и Номер отдела обнаруживаются точно в одной записи отношения "Назначение". Поле Номер Назначения фактически не нужно, так как Номер Служащего и Номер Отдела могут вместе служить ключом. В большинстве (но не во всех) СУРБД разрешены отношения с составными ключами. Для тех из них, в которых ключ должен быть представлен обязательно одним полем, структура будет такой, как представлена выше.

"Естественный подход" с использованием таблиц может оказаться еще более "притянутым за уши", когда данные - разреженные. Разреженные данные означают, что не каждое поле в каждой записи содержит данные. В некоторых приложениях данные очень разреженные - только несколько из большого числа столбцов, определенных для данного отношения, могут содержать данные в каком-либо заданном ряду. Если в реальном приложении типично, что данные разреженные, то обычно пользователь не рассматривает их как табличные. Например, представим отношение, описывающее посещение пациентом врача. Оно может иметь поля, которые содержат результаты обследования: радиограмма, ультразвук, температура, вес и т.д. Большинство из этих полей может быть пусто для какого-либо пациента. Представить их в качестве полей таблицы в лучшем случае противоестественно. Более естественно представить эти данные в виде списка элементов, чем в качестве полей таблицы. Воплотить в жизнь эту точку зрения пользователя в реляционной базе данных нелегко. Эти различные элементы нельзя занести в одну таблицу, так как они нарушают однородность столбца - данные, хранящиеся в полях, не все одного типа, как это требуется в реляционных таблицах.

Реляционные базы данных были бы совсем непригодны, если бы эти разреженные данные действительно хранились внутри прямоугольного массива, так как для этих пустых элементов данных надо было бы выделять пространство. В действительности, большинство современных СУРБД используют таблицы как "логические" структуры, но в качестве внутренних "физических" структур используют структуры, которые могут хранить редкие данные более эффективным способом, таким как В-дерево.

В настоящее время модель реляционной базы данных - лидирующая в компьютерной индустрии и занимает эту позицию уже приблизительно 20 лет. Но по иронии судьбы эта позиция силы может превратиться в позицию слабости. Несмотря на то, что РБД стали доминирующими в индустрии баз данных за последние 20 лет, многие эксперты почувствовали, что РБД приближаются к концу своей "карьеры" доминирующего игрока и будут вытесняться более современными и гибкими моделями, в первую очередь моделью объектно-ориентированной базы данных. Существуют некоторые сомнения относительно того, смогут ли такие гиганты как Oracle, Informix, Sybase, Gupta и т.д. произвести изменения своевременно, имея так много клиентов. Требование поддерживать обратную совместимость может резко препятствовать их возможности идти в ногу с прогрессом технологии БД. С другой стороны, прекрасное финансирование этим огромным количеством клиентов упрощает разработки. Все продавцы больших реляционных баз данных добавляют объектно-ориентированные средства, помещая их поверх нижележащей реляционной структуры. Эти средства полезны при разработке базы данных, но по-видимому бесполезны во время выполнения, так как лежащая в основе реляционная модель сохраняется.


Site of Information Technologies
Designed by  inftech@webservis.ru.