Структура и основные понятия реляционной модели данных

Реляционная модель данных.

Контрольные вопросы.

Нереляционные СУБД.

Нереляционные СУБД – относительно недавнее пополнение множества систем для работы с данными. Их появление и растущая популярность вызваны, главным образом, развитием сетевых технологий и приложений. Современные сетевые приложения, наиболее яркими примерами которых являются социальные сети, должны поддерживать доступ одновременно для миллионов пользователей и хранить терабайты различных данных. К сожалению, при всех достоинствах, реляционные СУБД не могут обеспечить работу в таком режиме. Мало того, многие достоинства превращаются в недостатки и больше мешают, нежели помогают.

Именно эта ситуация и вызвала значительный рост количества решений, позволяющих обеспечить эффективное хранение и обработку данных для высоконагруженных сетевых приложений. И хотя к ним в еще большей степени применимы замечания, сделанные для объектно-ориентированных СУБД, которые ставят под сомнение их статус СУБД, популярность нереляционных (или NoSQL) систем велика и растет. Поэтому, мы рассмотрим их подробнее в отдельной главе.

1. Дайте определение понятию «модель данных».

2. Перечислите основные модели данных.

3. Опишите особенности ранних моделей данных.

4. Дайте основные характеристики иерархической модели данных.

5. Дайте основные характеристики сетевой модели данных.

6. Дайте основные характеристики объектно-ориентированной модели данных.


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

В первую очередь, приведем определение отношения, данное самим Коддом в [2].

Для заданных множеств S1, S2,..., Sn (не обязательно различных) R является отношением на этих n множествах, если представляет собой множество кортежей степени n, у каждого из которых первый элемент взят из множества S1, второй – из множества S2 и т.д.) Мы будем называть Sj j-тым доменом R. Говорят, что такое отношение R имеет степень n. Отношения степени 1 часто называют унарными, степени 2 – бинарными, степени 3 – тернарными и степени n – n-арными.

Множества S1, S2, …, Sn называют доменами. Домен можно считать некоторым дополнительным ограничением над базовым типом данных. Например, домен «возраст» может основываться на целочисленном типе данных, но дополнять его ограничениями снизу (возраст не может быть меньше нуля) и сверху (допустим, что возраст не может превышать 150 лет). Кроме того, для возраста не имеют смысла операции деления и умножения (как минимум), поэтому СУБД могла бы отслеживать попытки применения этих операций и запрещать их. Вхождение домена в отношение называется атрибутом.

Понятие типа данных используется здесь в привычном значении, так что пояснения представляются излишними.

Итак, отношение можно представить себе в виде таблицы, столбцы которой образуют атрибуты, а строки – кортежи. Атрибуты задают структуру отношения, а кортежи содержат конкретные значения этих атрибутов, то есть, сами данные.

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

Еще одним понятием, входящим в реляционную модель, является понятие первичного ключа. Первичный ключ – это атрибут или их комбинация, значение которых позволяет однозначно идентифицировать кортеж. В каждом отношении должен иметься первичный ключ.

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

Чтобы завершить рассмотрение реляционной модели данных, приведем так называемые фундаментальные свойства отношений. Их выделяют четыре, а именно:

Атомарность значений атрибутов. «Атомарность» означает неделимость, то есть, значения атрибутов не имеют внутренней структуры и рассматриваются СУБД как целое. То есть, возможности задавать векторы и повторяющиеся группы в качестве значений атрибутов в реляционных СУБД нет. При этом надо отметить, что Кодд допускал возможность определения в качестве домена другой переменной отношения, так что значением атрибута становится отношение. Но такие отношения подлежат нормализации (рассматривается далее в главе 4), с тем, чтобы исключить атрибуты, значением которых является другое отношение (точнее, выделить их в отдельные отношения). Так что можно считать, что значения атрибутов отношений всегда атомарны.

Отсутствие кортежей-дубликатов. Данное свойство вытекает из самого определения отношения. В декартовом произведении множеств значений доменов, составляющих переменную отношения дубликатов быть не может (по определению). Соответственно, и в отношении, являющемся подмножеством этого декартова произведения, также не может оказаться дубликатов кортежей. Из этого требования как раз и вытекает обязательность наличия первичного ключа в отношении – должна быть возможность отличать кортежи друг от друга. В предельном случае в первичный ключ входят все атрибуты отношения.

Отсутствие упорядоченности кортежей. Кортежи в отношении могут располагаться в любом порядке. Если имеется два отношения, отличающиеся только порядком следования кортежей, то они эквивалентны друг другу. Как следствие, понятия «предыдущий кортеж» и «следующий кортеж», а также операции перемещения по кортежам в реляционной модели не определены.

Отсутствие упорядоченности атрибутов. Атрибуты в отношении также могут располагаться в любом порядке. В своей работе Кодд обращает внимание на то, что порядок атрибутов важен в ситуации, когда домен входит в одно отношение дважды. Это вполне возможная ситуация, и чтобы избежать возможных проблем, Кодд предлагает дополнять имя домена, используемое в качестве имени атрибута в отношении, еще и названием роли, которую этот домен играет в конкретном вхождении. Например, у нас может иметься отношение СоставИзделия, которое описывает порядок сборки того или иного изделия. Предположим, что в этом отношении имеются атрибуты Изделие, Изделие, Количество. Первое вхождение домена Изделие означает целое, а второе – часть, которая в него входит. Разумеется, если здесь поменять местами атрибуты, то корректность данных может и нарушится. Для решения проблемы можно заменить имена на Изделие.Целое и Изделие.Часть. В этом случае перестановка их местами не внесет путаницы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: