Расширение алгебры Кодда операциями с рекурсивными объектами

В.В. Говорушко, В.Б. Новосельцев

РАСШИРЕНИЕ АЛГЕБРЫ КОДДА ОПЕРАЦИЯМИ С РЕКУРСИВНЫМИ ОБЪЕКТАМИ

Ставится задача расширения реляционной алгебры Кодда операциями с рекурсивными объектами. Доказывается теорема о замкнутости расширенной реляционной алгебры на основе операции объединения. Рассматриваются пути повышения эффективности построения новых структур баз данных на основе рекурсивной модели.

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

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

Реляционный подход к представлению модели данных, разработанный Коддом в 1970 г., получил огромную известность благодаря простоте основных идей и строгому формальному теоретическому фундаменту. Реляционная модель описывается в понятиях классической алгебры, математической логики, теории формальных систем и теории графов. Данное обстоятельство обеспечивает развитие эффективных формальных методов проектирования баз данных. Со времени появления первых работ Кодда [1] по реляционной модели данных круг задач по созданию баз данных расширялся, что повлекло за собой разработку новых методов моделирования реляционных баз данных и усовершенствование классической реляционной модели данных.

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

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

Рекурсивным называется объект, формальное определение которого содержит ссылку на себя. Это есть эквисоединение особого вида. Заметим, что кортеж не может ссылаться на самого себя ни непосредственно, ни опосредованно.

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

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

- С = <а1:Б1, а2:Б2,..., ап:Бп> - это кортеж-тип, где все атрибуты-имена а, - попарно различны; при этом С называется основным кортежем или основой;

- таблица Т, составленная конечным набором попарно различных основных кортежей-значений, называется основной таблицей;

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

а) кортежи-значения Cr обобщенной таблицы попарно различны;

б) каждый кортеж Crj - суть да,-кратно (да,- >1) повторенный набор атрибутов-значений <а11, a12,..., a1n, a21, a22,..., a2n,..., ami, am2,..., amn>, таких, что aikeDk(1<k<n) основного кортежа С и для любых ijj никакие два под-кортежа <a,b ai2,..., ain> и <aj1, aj2,...ajn> не совпадают;

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

Пусть в обобщенной таблице Т стандартным образом определены ключевой набор К и индексный набор I, такие, что, D(K) = D(I); KOI = 0; определено отображение RJ^K, причем, очевидно, неподвижной точкой транзитивного замыкания R* является значение null ссылочного атрибута.

Тогда рекурсивным эквисоединением таблицы Т по отношению R называется операция, результатом которой выступает обобщенная таблица Tr, такая, что для каждого её кортежа - значения Cr, состоящего более чем из двух подкортежей основной таблицы <сь с2,..., cm>:

а) I(cm) = null;

б) I(ck-i) = K(Ck), где k < m.

Итак, мы расширили традиционную алгебру Кодда, переопределив понятие таблицы.

В классической интерпретации реляционная алгебра представляет собой совокупность операций над отношениями (таблицами). В статье, опубликованной в журнале Communication of the ACM [2], Кодд определил множество таких операций и доказал, что это множество обладает свойством реляционной замкнутости.

Полная алгебра состоит из двух групп операций:

1. традиционных операций над множествами (объединение, пересечение, вычитание и декартово произведение);

2. специальных реляционных операций (проекция, соединение и деление).

Все операции предложенного выше набора обладают очевидной и простой интерпретацией.

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

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

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

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

При выполнении прямого произведения двух отношений R и S, обозначаемого как RxS, производится отношение, кортежи которого являются конкатенацией (сцеплением) кортежей первого R и второго S операндов.

Результатом ограничения отношения R по некоторому условию Cond является отношение, включающее подкортежи отношения R, удовлетворяющие этому условию Cond. Синтаксис операции: R where Cond.

При выполнении проекции отношения R на заданный набор его атрибутов S производится отношение, кортежи которого производятся путем взятия (с учетом возможных повторяющихся кортежей) соответствующих значений из кортежей отношения R. Синтаксис операции: п [5] (R).

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

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

Операция переименования производит отношение, тело которого совпадает с телом операнда, но имена атрибутов изменены. Оператор переименования атрибутов имеет следующий синтаксис: [R last/R new] , где R last - исходные имена атрибутов, R new - новые имена атрибутов.

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

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

Примером может служить реализация структуры любой организации, в которой одному служащему подчиняются несколько других служащих. На рис. 1 представлен пример рекурсивной зависимости в отношении «Служащий».

Служащий —О

Код служащего Имя

Фамилия

Адрес

'

Рис. 1. Пример рекурсивной зависимости Теорема о замкнутости расширенной реляционной алгебры: отношения образуют замкнутую систему относительно расширенной реляционной алгебры.

Другими словами, результатом применения одной из реляционных алгебраических операций (объединения, пересечения, вычитания, проекции, селекции, соединения) к произвольным таблицам Т1 и Т2 будет таблица в смысле базового определения рекурсивной таблицы.

Доказательство. Проведем доказательство теоремы для операции объединения.

Рассмотрим таблицы Т1 и Т2. Пусть G = Т1иТ2. Покажем, что G удовлетворяет определению рекурсивной таблицы.

а) Поскольку Т1 и Т2 - таблицы в смысле определения рекурсивной таблицы, то каждая из них состоит из попарно различных кортежей С’г (1 <г < n) и С”г (1 <г < m) соответственно. Тогда по определению операции объединения таблица G будет также состоять из попарно различных кортежей Сг (1 < г < k, k < m + n - исключаются повторяющиеся кортежи).

б) По аналогичным причинам в таблице G каждый кортеж Сг будет m-кратно повторенный набор атрибутов-значений <a11, a12,... , a1n, a21, a22,... , a2n,... , am1, am2,... , amk>, таких, что aiseDs (1 < s < n) основного кортежа С и никакие два подкортежа <ai1, ai2,..., aik> и <ajb aj2,..., ajk> не совпадают при i Ф j;

в) Т1 - таблица в смысле определения рекурсивной таблицы. Следовательно, хотя бы один из атрибутов первого подкортежа имеет значение null. Т2 - также таблица в смысле определения рекурсивной таблицы. Следовательно, хотя бы один из атрибутов её первого подкортежа имеет значение null. Тогда таблица G будет также содержать хотя бы один такой подкортеж (по действию операции объединения).

г) Т1 - таблица в смысле определения рекурсивной таблицы, следовательно, в ней заданы ключевой набор К и индексный набор I’, такие, что D(K) = D(I) и К’ПГ=0. Т2 - также таблица в смысле определения рекурсивной таблицы, следовательно, в ней заданы ключевой набор К” и индексный набор I”, такие что D(K”)= = D(I”) и K”ni” = 0. Из требования совместимости таблиц Т1 и Т2 по объединению и действию операции объединения вытекает, что D(K) = D(I) и Kni = 0, где К= =К’иК”, I = I’uI”;

д) Т1 - таблица в смысле определения рекурсивной таблицы, следовательно, существует отображение RI^-K, причем неподвижной точкой такого транзитивного замыкания R’* является значение null. Т1 - таблица в смысле определения рекурсивной таблицы, следовательно, существует отображение R”I”^K”, причем неподвижной точкой такого транзитивного замыкания R” является значение null. В таблице G можно определить отображение R'I^K, которое действует по правилу R(i) = R’(i) при ieI и R(i) = R”(i) при ieI”. Транзитивное замыкание R будет иметь неподвижные точки, значение которых null.

е) Для каждого кортежа-значения Cr таблицы G, состоящего более чем из двух кортежей основной таблицы <cb c2,..., cm>, будут выполняться условия I(cm) = null и I(ck-1) = K(Ck), k < m.

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

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

Исходя из этого, для преобразования рекурсивных отношений следует добавить в отношения рекурсивные

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

ЛИТЕРАТУРА

1. CoddE.F. Derivability, redundancy, and consistency of relations stored in large data banks // IBM Research Report RJ599 (August 19th, 1969).

2. Codd E.F. A relational model of data for large shared data banks // CACM 13, №. 6 (June 1970). Republished in Milestones of Research - Selected Papers 1958-1982 (CACM 25th Anniversary Issue), CACM 26, № 1. 1983.

Статья представлена кафедрой программирования факультета прикладной математики и кибернетики Томского государственного университета, поступила в научную редакцию «Кибернетика» 3 июня 2004 г.