Реализация основных операций реляционной алгебры средствами расширенной реляционной модели


Автор(ы): Г.В.Слюсарев, Ю.Н.Гарашко, С.Н.Чернухин

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

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

Понятие расширенной реляционной алгебры и описание базового набора ее операций выполнено в работе [1]. Эта реляционная модель предполагает использование трех основных операций erClone, erSET_ATTRIBS_KIND, erMOVE на расширенном понятии отношения. Расширение понятия отношения заключается в нестандартном определении понятия атрибута отношения, которое включает в себя, в отличие от классического понимания атрибутов, триаду: имя атрибута, домен, вид. Вид атрибута может иметь следующие значения: КЛЮЧ, ХРАНИТЬ ПЕРВОЕ, ХРАНИТЬ ПОСЛЕДНЕЕ, ХРАНИТЬ СУММУ, ХРАНИТЬ МИНИМУМ, ХРАНИТЬ МАКСИМУМ.

Работы, в которых рассматривались изменения набора базовых операций реляционной алгебры, существуют (см. например новую алгебру Дейт и Дарвен (Д&Д) [2]). Однако причинами их создания обычно являются либо желание обеспечить простоту базовых операций, либо интеграцию с объектными расширениями. В основе формирования набора базовых операций расширения реляционной алгебры лежат простые требования их удобства для создания алгоритмов и выразительности последних, а также простоты организации взаимодействия с современными РСУБД SQL-типа [1].

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

Первоначально Кодд предложил восемь операций, но впоследствии к ним были добавлены и некоторые другие. Пять основных операций реляционной алгебры, а именно выборка (selection), проекция (projection), декартово произведение (Cartesian product), объединение (union) и разность множеств (set difference), выполняют большинство действий по извлечению данных. На основании пяти основных операций можно также вывести дополнительные операции, такие как операции соединения (join), пересечения (intersection) и деления (division).

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

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

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

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

Объединение двух отношений R и S определяет новое отношение, которое включает все кортежи, содержащиеся только в R, только в S, одновременно в R и S, причем все дубликаты кортежей исключены. При этом отношения R и S должны быть совместимы по объединению.

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

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

Операция разности в реализации расширенной реляционной модели осуществляется при помощи процедуры перемещения с указанием параметра mvDifference. Результат операции будет возвращен в первое расширенное отношение. Операция полностью соответствует операции реляционной алгебры.

Операция пересечения определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместимы по объединению.

Операция "разность" в реализации расширенной реляционной модели осуществляется с помощью процедуры перемещения с указанием параметра mvIntersection. Результат операции будет возвращен в первое расширенное отношение. Операция полностью соответствует операции реляционной алгебры.

Операция "декартово произведение" определяет новое отношение, которое является результатом конкатенации каждого кортежа из отношения R с каждым кортежем из отношения S.

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

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

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

Также имеется возможность указания типа соединения в процедуре перемещения при помощи параметра, который может принимать следующие значения: внутреннее соединение (mvInner), левое внешнее соединение (mvLeft), правое внешнее соединение (mvRight) и полное внешнее соединение (mvOuter).

Таким образом, расширенная реляционная модель покрывает все основные операции реляционной алгебры и реляционного исчисления, поэтому является реляционно-полной. Расширенная реляционная модель предоставляет большие возможности при работе с наборами данных. Это достаточно удобный, гибкий, независимый от СУБД и в тоже время высокопроизводительный подход, который легко интегрируется с любым языком программирования и распространяет реляционные принципы обработки данных на разработку серверов приложений и толстых клиентских приложений. Он позволяет создавать реляционные машины данных, которые существенно упрощают разработку прикладной функциональности таких приложений. Предложенный подход позволяет обеспечить независимость алгоритмов приложений от данных, и реализован на языке Delphi; готовится его реализация на языках C# и Java.

Все программные комплексы НПО "Метарекс" разработаны с использованием расширенной реляционной модели данных.

Литература:

  1. Г.В.Слюсарев, Ю.Н.Гарашко. Специальное расширение реляционной модели, ориентированное на сложные алгоритмы обработки данных
  2. Hugh Darwen and C.J.Date. "The Third Manifesto: Foundation of Object/Relational Databases," In C.J.Date: Relational Database Writings 1994-1997. Reading, Mass.: Addison-Wesley (1998)