SHPORA.net :: PDA

Login:
регистрация

Main
FAQ

гуманитарные науки
естественные науки
математические науки
технические науки
Search:
Title: | Body:

Реляционная модель данных. Специальные операции реляционной алгебры.


Реляционная модель данных была предложена Е.Ф. Коддом в 1970 году и получила к настоящему времени широкое распространение и популярность. Этому способствовали два ее существенных достоинства: 1) однородность представления данных в модели, которая обусловливает простоту восприятия ее конструкций пользователями базы данных, и 2) наличие развитой математической теории реляционных баз данных, которая обусловливает корректность ее применения.

В основе реляционной модели данных лежит понятие отношения, которое задается списком своих элементов и перечислением их значений. Рассмотрим пример на рис. 4.1. На нем представлено расписание движения автобусов по маршруту "Москва - Черноголовка - Москва". Налицо определенная структура. Каждый включенный в расписание рейс имеет свой номер, время отправления и время в пути. Расписание может быть представлено таблицей. Заголовки колонок таблицы носят название атрибутов. Список их имен носит названия схемы отношения. Каждый атрибут определяет тип представляемых им данных, который вместе с областью его значений называется доменом. Вся таблица целиком называется отношением, а каждая строка таблицы носит название кортежа отношения. Таким образом, отношение можно представить в виде двумерной таблицы.



Рис. 4.1. Расписание движения автобусов по маршруту "Москва - Черноголовка - Москва" как отношение

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

Введем ряд математических определений, связанных с понятием отношения.

Определение 1. Декартово произведение Пусть D1, D2, ..., Dn - произвольные конечные множества, не обязательно различные. Декартовым произведением этих множеств называется множество вида . Пример:

Определение 2. Схема отношения

Пусть - имена атрибутов. Схемой r отношения R называется конечное множество имен атрибутов .

Определение 3. Отношение

Отношением со схемой r на конeчных множествах D1, D2,…, Dn называется подмножество R декартового произведения .

Элементы отношения (d1, d2, ..., dn), как уже упоминалось выше, называются кортежами. О каждом отношении, являющимся подмножеством декартового произведения , можно сказать, что оно имеет арность n. Кортеж (d1, d2, ..., dn) имеет n компонентов. Для обозначения кортежа применяется и сокращенная форма записи d1, d2, ..., dn. Использование понятия декартового произведения для определения отношения в реляционной модели данных делает модель конструктивной. На математическом языке это означает, что все остальные понятия модели определяются в рамках строго математического построения на базе декартового произведения.

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

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

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

С математической точки зрения однородность реляционной модели, о которой упоминалось выше, состоит в том, что схема отношения является постоянной, иначе говоря, каждая строка таблицы имеет один и тот же формат. С другой стороны, предполагается, что каждая строка таблицы представляет некую сущность реального мира или связь между ними. Обладают ли сущности реального мира такой однородной структурой, является вопросом, на который должен ответить аналитик или эксперт-пользователь. Решение о пригодности использования реляционной модели для моделирования данных конкретной предметной области решается руководителем ИТ-проекта и аналитиками.

Формы представления отношений

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

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

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

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

Принято различать первичные ключи и частичные ключи. Математически первичным ключом отношения R со схемой r является подмножество сужения декартового произведения, которое позволяет однозначно идентифицировать кортеж. Если первичный ключ содержит несколько атрибутов, то он называется составным ключом, в противном случае - атомарным. Частичным ключом называется атрибут составного ключа, если он однозначно определяет совокупность неключевых атрибутов отношения. Атрибут кортежа, который является первичным ключом другого отношения, называется внешним (иногда посторонним) ключом.

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

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

Отношения в реляционной модели данных, как правило, представляются с помощью функциональной формы записи, при этом атрибуты первичного ключа подчеркиваются. Однако наибольшее распространение получило представление отношений в виде графических диаграмм, например ER-диаграмм, о которых мы говорили в первой лекции. Преимуществами такого представления являются наглядность диаграмм и возможность их построения в ряде CASE-средств проектирования баз данных. Обычно CASE-средства позволяют поддерживать несколько уровней представления отношений. Так, например, ErWin поддерживает уровень логической и физической моделей базы данных.

Отметим, что представление фрагментов реального мира через отношения даже в рамках одной модели данных не характеризуется единственностью. Например, зададимся вопросом: "Что есть цвет автомобиля? Связь, объект или атрибут?" Если за объект принять автомобиль, то цвет может выступать в качестве атрибута автомобиля. Если рассматривать зависимость отражательной способности покрытия автомобиля от его цвета, то цвет можно считать объектом. Если рассматривать взаимосвязь между цветом модели автомобиля и ее номером, то цвет можно считать связью. В любом случае при представлении какого-либо качества реального мира в модели следует четко понимать, какие запросы в рамках создаваемой модели данных должны быть разрешимыми.

В итоге сформулируем основные свойства реляционной модели данных, которые следуют из понятия отношения как множества.

1.Все кортежи одного отношения должны иметь одно и то же количество атрибутов.

2.Значение каждого из атрибутов должно принадлежать некоторому определенному домену.

3.Каждое отношение должно иметь первичный ключ.

4.Никакие два кортежа не могут иметь полностью совпадающих наборов значений.

5.Каждое значение атрибутов должно быть атомарными, т.е. не должно иметь внутренней структуры и содержать в качестве компонента другое отношение.

6.Реляционная модель данных должна быть непротиворечивой, в частности должен выполняться 1) принцип ссылочной целостности - связи между отношениями должны быть замкнутыми, 2) значения колонок должны принадлежать одному и тому же определенному для них домену.

7.Порядок следования кортежей в отношении не имеет значения. Порядок есть в большей степени свойство хранения данных, чем свойство непосредственно самой реляционной модели данных.

Реляционные операции

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

Рассмотрим каждую из операций. Отметим, что операции выполняются над отношением в целом, а не над отдельным кортежем отношения. Введем несколько вспомогательных определений.

Определение 4. Степень отношения есть число входящих в него атрибутов или мощность схемы отношения (как множества).

Определение 5. Мощность отношения есть число входящих кортежей или кардинальное число отношения (как множества).

Определение 6. Два отношения называются совместными, если они имеют совместные схемы (совпадают схемы отношений и домены соответствующих атрибутов).

Объединение отношений

Пусть Qa, Qb, Qc - множество кортежей отношений А, B, С соответственно. Операция объединения выполняется над двумя совместными отношениями A и B. Результатом операции объединения является отношение C, которое включает в себя все кортежи отношения А и кортежи отношения B, отличные от кортежей отношения A. Таким образом, объединение отношений можно представить с помощью теоретико-множественной операции объединения:



Пересечение отношений

Операция пересечения выполняется над двумя совместными отношениями А и В. Результатом операции пересечения является отношение С, которое включает в себя кортежи отношения А, полностью совпадающие с кортежами отношения В. Таким образом, пересечение отношений можно представить с помощью теоретико-множественной операции пересечения:

.

Разность отношений

Операция разности выполняется над двумя совместными отношениями А и В. Результатом операции разности является отношение С, которое включает в себя кортежи отношения А, отличные от кортежей отношения В. Таким образом, разность отношений можно представить с помощью теоретико-множественной операции разности:



Отметим для дальнейшего, что пересечение отношений можно представить через разность отношений как Qa - (Qa - Qb).

Декартово произведение отношений

Операция декартова произведения выполняется над двумя произвольными отношениями А и В. Результатом операции декартова произведения является отношение С, степень которого равна сумме степеней исходных отношений, а мощность - произведению мощностей исходных отношений. Таким образом, декартово произведение отношений можно представить с помощью декартова произведения множеств:



Проекция отношения

Операция проекции выполняется над одним отношением А. Результатом выполнения операции проекции над отношением А является отношение С, которое включает в себя все кортежи отношения А, но только с теми атрибутами, на которые выполняется проекция. Операцию проекции отношения можно представить следующим образом:



Для обозначения проекции в теории реляционных баз данных принято использовать греческую букву , а для обозначения атрибутов, которые участвуют в операции проекции, принято использовать их номера или имена как подстрочные индексы . Предполагается, что существует взаимно однозначное соответствие между номерами атрибутов и их именами для данной схемы отношения. Для обозначения атрибутов, которые участвуют в проекции, в формуле выше использованы индексы i1, i2, …, iN, где N - число атрибутов проекции.

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

Деление отношений

Операция деления выполняется над двумя отношениями А и В, где А - отношение-делимое, а B - отношение-делитель. При этом атрибуты B должны являться подмножеством атрибутов A. Результатом выполнения операции деления является отношение С, которое включает в себя атрибуты отношения А, отличные от атрибутов отношения В, и только те кортежи, декартовы произведения которых с отношением В дают отношение А:



Представление частного отношений через другие алгебраические операции может быть получено следующим образом. Предположим, что . Пусть n и m - арности отношений Qa и Qb, n > m. Тогда разность исходных отношений есть множество кортежей t степени n - m, таких, что для всех кортежей s степени m из Qb, кортеж ts принадлежит Qa. Пусть . Тогда есть множество кортежей степени n, не принадлежащих Qa. Каждый из них формируется из n - m первых компонентов кортежа из Qa, за которым следуют компоненты кортежа Qb. Пусть далее есть множество кортежей t степени n - m, состоящих из первых n - m компонентов Qa, причем для каждого из них в Qb существует некоторый кортеж s степени m, такой, что ts не принадлежит Qa. Таким образом, разность отношений T - V есть, по определению, частное отношений .

Выбор из отношения

Операция выбора (селекции) выполняется над одним отношением А. Результатом выполнения операции выбора является отношение С, которое включает в себя кортежи отношения А, удовлетворяющие заданному условию (критерию выбора). Операция выбора из отношения может быть представлена следующим образом:

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

Соединение отношений

Операция q-соединения выполняется над двумя отношениями А и В. Результатом выполнения операции -соединения является отношение С, которое включает в себя все кортежи со всеми атрибутами исходных отношений А и В, удовлетворяющими заданному условию. В каждом отношении выделяется атрибут, по которому выполняется соединение.

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

где n - степень отношения Q_a; - арифметический оператор сравнения; i, j - номера атрибутов в Q_a и Q_b соответственно, по которым выполняется соединение.

Рассмотрим частные случаи -соединения.

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

Различают еще естественное соединение, когда оба отношения имеют набор одинаковых по именам и типам атрибутов. Соединение выполняется по всему набору совпадающих атрибутов. Пусть R1 (A1, A2,..., An, B1, ...) и R2 (A1, A2, ..., An, C1, ...) - исходные отношения, тогда естественное соединение может быть вычислено следующим образом для одного атрибута:

- вычислим ;

- для каждого атрибута А, который именует некоторую колонку в R1 и какую-либо колонку в R2, выберем те кортежи из , у которых совпадают значения в колонках R1.А и R2.А, где R1.А - имя колонки в , соответствующее колонке А из R1. Аналогично для R2.А.;

- для каждого указанного выше атрибута А удалим из кортежа R2.А. Формально, если A1, A2, ..., An являются именами атрибутов, используемых и в R1, и в R2, то естественное соединение Qc = R1 >< R2 есть .

Специальные реляционные операции реляционной алгебры: ограничение, проекция, соединение и деление.

Операция ограничения

Операция ограничения требует наличия двух операндов: ограничиваемого отношения и простого условия ограничения. Простое условие ограничения может иметь либо вид (a comp-op b), где а и b - имена атрибутов ограничиваемого отношения, для которых осмысленна операция сравнения comp-op, либо вид (a comp-op const), где a - имя атрибута ограничиваемого отношения, а const - литерально заданная константа.

В результате выполнения операции ограничения производится отношение, заголовок которого совпадает с заголовком отношения-операнда, а в тело входят те кортежи отношения-операнда, для которых значением условия ограничения является true.

Пусть UNION обозначает операцию объединения, INTERSECT - операцию пересечения, а MINUS - операцию взятия разности. Для обозначения операции ограничения будем использовать конструкцию A WHERE comp, где A - ограничиваемое отношение, а comp - простое условие сравнения. Пусть comp1 и comp2 - два простых условия ограничения. Тогда по определению:

A WHERE comp1 AND comp2 обозначает то же самое, что и (A WHERE comp1) INTERSECT (A WHERE comp2)

A WHERE comp1 OR comp2 обозначает то же самое, что и (A WHERE comp1) UNION (A WHERE comp2)

A WHERE NOT comp1 обозначает то же самое, что и A MINUS (A WHERE comp1)

С использованием этих определений можно использовать операции ограничения, в которых условием ограничения является произвольное булевское выражение, составленное из простых условий с использованием логических связок AND, OR, NOT и скобок.

На интуитивном уровне операцию ограничения лучше всего представлять как взятие некоторой "горизонтальной" вырезки из отношения-операнда.

Операция взятия проекции

Операция взятия проекции также требует наличия двух операндов - проецируемого отношения A и списка имен атрибутов, входящих в заголовок отношения A.

Результатом проекции отношения A по списку атрибутов a1, a2, ..., an является отношение, с заголовком, определяемым множеством атрибутов a1, a2, ..., an, и с телом, состоящим из кортежей вида <a1:v1, a2:v2, ..., an:vn> таких, что в отношении A имеется кортеж, атрибут a1 которого имеет значение v1, атрибут a2 имеет значение v2, ..., атрибут an имеет значение vn. Тем самым, при выполнении операции проекции выделяется "вертикальная" вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.

Операция соединения отношений

Общая операция соединения (называемая также соединением по условию) требует наличия двух операндов - соединяемых отношений и третьего операнда - простого условия. Пусть соединяются отношения A и B. Как и в случае операции ограничения, условие соединения comp имеет вид либо (a comp-op b), либо (a comp-op const), где a и b - имена атрибутов отношений A и B, const - литерально заданная константа, а comp-op - допустимая в данном контексте операция сравнения.

Тогда по определению результатом операции сравнения является отношение, получаемое путем выполнения операции ограничения по условию comp прямого произведения отношений A и B.

Если внимательно осмыслить это определение, то станет ясно, что в общем случае применение условия соединения существенно уменьшит мощность результата промежуточного прямого произведения отношений-операндов только в том случае, когда условие соединения имеет вид (a comp-op b), где a и b - имена атрибутов разных отношений-операндов. Поэтому на практике обычно считают реальными операциями соединения именно те операции, которые основываются на условии соединения приведенного вида.

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

Имеется важный частный случай соединения - эквисоединение и простое, но важное расширение операции эквисоединения - естественное соединение. Операция соединения называется операцией эквисоединения, если условие соединения имеет вид (a = b), где a и b - атрибуты разных операндов соединения. Этот случай важен потому, что (a) он часто встречается на практике, и (b) для него существуют эффективные алгоритмы реализации.

Операция естественного соединения применяется к паре отношений A и B, обладающих (возможно составным) общим атрибутом c (т.е. атрибутом с одним и тем же именем и определенным на одном и том же домене). Пусть ab обозначает объединение заголовков отношений A и B. Тогда естественное соединение A и B - это спроектированный на ab результат эквисоединения A и B по A/c и BBC. Если вспомнить введенное нами в конце предыдущей главы определение внешнего ключа отношения, то должно стать понятно, что основной смысл операции естественного соединения - возможность восстановления сложной сущности, декомпозированной по причине требования первой нормальной формы. Операция естественного соединения не включается прямо в состав набора операций реляционной алгебры, но она имеет очень важное практическое значение.

Операция деления отношений

Эта операция наименее очевидна из всех операций реляционной алгебры и поэтому нуждается в более подробном объяснении. Пусть заданы два отношения - A с заголовком {a1, a2, ..., an, b1, b2, ..., bm} и B с заголовком {b1, b2, ..., bm}. Будем считать, что атрибут bi отношения A и атрибут bi отношения B не только обладают одним и тем же именем, но и определены на одном и том же домене. Назовем множество атрибутов {aj} составным атрибутом a, а множество атрибутов {bj} - составным атрибутом b. После этого будем говорить о реляционном делении бинарного отношения A(a,b) на унарное отношение B(b).

Результатом деления A на B является унарное отношение C(a), состоящее из кортежей v таких, что в отношении A имеются кортежи <v, w> такие, что множество значений {w} включает множество значений атрибута b в отношении B.