Научная статья на тему 'Выполнение свойства соединения без потерь на некоторых типах схем баз данных'

Выполнение свойства соединения без потерь на некоторых типах схем баз данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
494
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БАЗА ДАННЫХ / SQL-ЗАПРОС

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Малыгин Д. В.

Building a correct query is of great importance in query-generating systems, and particularly, in systems that translate natural language queries to SQL-queries. It is sufficient to bound a set of relations, which are addressed in the query, to confront only objects related in the data domain. This problem is solved by execution of nonloss join on the set of relations forming the query. In this article a special case of nonloss join execution is considered nonloss joins on the "star"\ and "snowflake"\ schemas, that are used in OLAP applications.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Выполнение свойства соединения без потерь на некоторых типах схем баз данных»

Математические структуры и моделирование 2004, вып. 13, с. 161-169

УДК 519.6

ВЫПОЛНЕНИЕ СВОЙСТВА СОЕДИНЕНИЯ БЕЗ ПОТЕРЬ НА НЕКОТОРЫХ ТИПАХ СХЕМ

БАЗ ДАННЫХ

Д.В. Малыгин

Building a correct query is of great importance in query-generating systems, and particularly, in systems that translate natural language queries to SQL-queries. It is sufficient to bound a set of relations, which are addressed in the query, to confront only objects related in the data domain. This problem is solved by execution of nonloss join on the set of relations forming the query. In this article a special case of nonloss join execution is considered - nonloss joins on the "star" and "snowflake" schemas, that are used in OLAP applications.

Введение

Важное значение в системах автоматической генерации запроса и, в частности, систем преобразования естественноязыкового (ЕЯ)-запроса в SQL-запрос, принимает вопрос корректности формируемого запроса. Требуется ограничить множество отношений, участвующих в запросе, для того, чтобы не были сопоставлены друг другу объекты, не связанные в предметной области. Указанную проблему решает выполнение на множестве отношений запроса свойства соединения без потерь.

В статье рассматривается частный случай выполнения свойства соединения без потерь при наложении определенных условий на схему. Как частный случай, рассматривается выполнение свойства соединения без потерь на типах схем «звезда» (star schema) и «снежинка» (snowflake schema), применяемых в базах данных OLAP.

1. Случай с функциональными зависимостями

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

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

© 2004 Д.В. Малыгин

E-mail: [email protected]

Институт математики им. В.А.Стеклова СО РАН, лаборатория МППИ

162

Д.В. Малыгин. Выполнение свойства соединения без потерв...

При построении запросов, а также автоматизации формирования запроса также необходимо выполнение свойства для множества отношений запроса. Особенно важной проверка свойства становится при автоматизации построения запроса (в частности, при преобразовании ЕЯ-запроса в SQL-запрос).

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

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

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

Предложение 1. Выберем произвольную схему базы данных с множеством отношений R = (i?i, ..., Rn).

Выберем множество Л* С R, R* — (RI, ..., R*m) таким, что любое отношение из Л* не связано с любым другим отношением связью «один-ко-многим», т.е. для каждого R* из Л* не существует отношения Rk из R такого, что К* С {Rk}, по К* не является подмножеством ІД.

Если

1. Для любых двух отношений Ri и Rk можно найти последовательность отношений (Riі, ..., Rin), Rn = Ri, Rin = Rk такую что каждые два соседних элемента последовательности связаны ограничением внешнего ключа, т.е. для соседних отношений Rik и Дц^+і); где K{k С {Ri(k+ц} или ^-г(/с+1) О {Rik} •

2. Все отношения из Л* связаны между собой отношением 1:1, т.е. для каждого R* из Л* существует RI из Л* такое, что К* = КI,

то множество отношений схемы обладает свойством соединения без потерь.

Доказательство.

Выберем любое отношение R' из R*.

Для каждого отношения Ri из R можно найти последовательность отношений {Riі, ..., Rin}, R' = Rii, Rin = Ri такую, что каждый предыдущий элемент последовательности связан с последующим связью «много-к-одному» или «ОДИН-К-ОДНОМу», Т.е. для отношений Rik и Ri(k-\-1) ключ Kik лежит В {Ri(k+1)}.

Действительно, если Ri принадлежит і?*, то такая последовательность примет вид {R',Ri} (по п.1 условия).

Если же Ri принадлежит R\R*, тогда возможность построения такой последовательности обеспечивается п.1 условия, а тип связи между двумя соседними элементами последовательности обеспечивается из выбора множества Л* (оно не содержит отношений, связанных с другими связью «один-ко-многим»).

Выберем последовательно все отношения из множества R\ R'. Как показано ранее, для каждого такого отношения Ri существует последовательность

Математические структуры и моделирование. 2004. Вып. 13.

163

(Rn, ..., Rin), Rh = Ri, і?ш = R*і такая что каждый предыдущий элемент последовательности связан с последующим связью «один-ко-многим» или «один-к-одному».

Согласно алгоритма проверки свойства соединения без потерь [2] выпишем таблицу проверки свойства:

Ai Ап

Ri

R!

К

На пересечении строки, соответствующей отношению Ri и столбца, соответствующего атрибуту А*;, стоит «1», если Aк Є {Ri}, иначе «О».

Последовательно пройдем по всем элементам данной последовательности. Текущий элемент обозначим как последующий - как Дц*.+1). Из свойств данной последовательности вытекает, что С {Дц/С+ц}. Таким образом, существует функциональная зависимость і^(Д+1) -д К^, а значит и і^(Д+1) —{Rik}-Учитывая предыдущие отношения в данной последовательности, получим, что Ki(k+\) {RiU • • • ? Rik}-

Согласно [2], получим, что т.к. на пересечении строк R^ и R^ti) и столбцов, относящихся к атрибутам г), стоят «1», то ячейки строки г), соответствующие ячейкам, имеющим значение «1» в строке R^ (это ячейки, соответствующие атрибутам {Rn, ..., Rik}), также примут значение «1».

Таким образом, последовательно выбрав все отношения из R \ і?', построив последовательности от данных отношений до і?', получаем, что все ячейки строки R1 имеют значение «1». Значит, согласно алгоритма [2], множество отношений схемы обладает свойством соединения без потерь. ■

Замечание 1. Можно рассмотреть схему базы данных как граф. Вершинами графа можно принять отношения. Если два отношения связаны между собой ограничением внешнего ключа, то можно рассматривать эту связь как дугу между вершинами. Причем, если два отношения связаны связью «один-к-одному», то дугу можно считать ненаправленной, а если «один-ко-многим» или «многие-к-одному», то дугу можно считать направленной.

В данной терминологии утверждение можно переформулировать следующим более очевидным способом:

Предложение 2. Если

1. Схема базы данных представляет собой связный граф,

2. Множество таких отношений схемы, которые не связаны с любым другим отношением связью «один-ко-многим», связно,

то множество отношений схемы обладает свойством соединения без потерь.

164

Д.В. Малыгин. Выполнение свойства соединения без потерв...

РК А1

FK1 А2

і 1

м

РК АЗ -ГТ>- —IIlЬ РК АЗ

FK1 А2

РК А2

Следствие 1. Если граф схемы базы данных представляет, собой дерево, в котором дуга «предок-потомок» представляет собой связь типа М : 1 или 1:1, то множество отношений схемы обладает свойством соединения без потерь.

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

2. Примеры

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

В данном случае не выполняется второе условие утверждения, т.е. множество отношений {І?1, і?з, ІД}, НЄ связанных с любым другим отношением связью «один-ко-многим», не связно.

Согласно алгоритму проверки свойства соединения без потерь [2] выпишем таблицу проверки свойства:

і—1 Л-2 со

Ri і і

R2 і

со і 1

1

Математические структуры и моделирование. 2004. Вып. 13.

165

РК А2

РК АЗ

А4

РК А1 РК А1

А2 АЗ

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

Аі А-2 со

Ri і 1

R2 1

со 1 1

R4 і 1

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

Пример 2. Покажем на контрпримере, что утверждение, обратное утверждению 1, неверно, т.е. из свойства соединения без потерь не следует связность графа отношений.

Действительно, рассмотрим схему базы данных, приведенную на рисунке. Согласно алгоритму проверки свойства соединения без потерь [2] выпишем таблицу проверки свойства:

і—1 Л2 со а4

I—1 1 1

#2 1

СО 1 1 1

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

і—1 л2 со а4

і—1 1 1 1 1

#2 1 1 1 1

СО 1 1 1

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

166

Д.В. Малыгин. Выполнение свойства соединения без потерь...

РК А1 " 1 — 1 " РК А1

FK1 А2 FK1 АЗ

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

ІІ

РК А2 — h 1 Ь 1 — РК АЗ

FK1 А4 4 4 FK1 А4

РК А4-

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

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

Аі A-2 CO a4

Ri і l

R2 і 1

со 0$ l 1

R4 1 1

І?5 1

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

i—1 A2 CO a4

Ri і 1 1 1

R2 і 1 1 1

CO 1 1

i?4 1 1

i?5 1

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

Математические структуры и моделирование. 2004. Вып. 13.

167

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

В качестве примера рассмотрим типы схем «звезда» (star schema) и «снежинка» (snowflake schema), применяемые в базах данных OLAP [3].

Тип схемы данных «звезда» представляет собой схему отношений, в которой одно отношение является выделенным и называется «фактографическим» (fact table), данное отношение связано со всеми остальными отношениями схемы («отношениями измерений», dimension table) связью «многие-к-одному»; остальные отношения схемы связаны ограничением внешнего ключа только с фактографическим отношением.

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

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

3. Случай с многозначными зависимостями

Предложение 3. Выберем произвольную схему базы данных с множеством отношений R = (i?i, ..., Rn).

Выберем множество Л* С Л, Л* = (Л*,..., R*m) таким, что любое отношение из Л* не связано с любым другим отношением связью «один-ко-многим», т.е. для каждого R* из Л* не существует отношения Rиз R такогочто К* С {Rk}j но К* не лежит в ІД.

Если

1. Для любых двух отношений Ri и Rk можно найти последовательность отношений (Яц,...,i?^n), Яц = Ri, Rin = Rk такую что каждые два соседних элемента последовательности связаны ограничением внешнего ключа, т.е. для соседних отношений Rik и R^kxі) Rik С {Ri(kx1)} или K-i(kxi) 0 {Rik}•

2. Существует отношение Rf из Д* такое, что для любого отношения Ri

из Л* существует многозначная зависимость 0 К'{Кі),

то множество отношений схемы обладает свойством соединения без потерь.

Доказательство. Доказательство утверждения аналогично доказательству утверждения 1.

Для каждого отношения Ri из R\R* существует отношение Л* из Л* и можно найти последовательность отношений {Яц,..., Rin}, Ri — Rn, Rin — Ri такую,

168

Д.В. Малыгин. Выполнение свойства соединения без потерв...

что каждый предыдущий элемент последовательности связан с последующим СВЯЗЬЮ «МНОГО-К-ОДНОМу» ИЛИ «ОДИИ-К-ОДИОМу», Т.е. ДЛЯ отношений Rik И Дцд.+1)

Кік С {-Rz(/сЧ-1) } *

Возможность построения такой последовательности обеспечивается п.1 условия, а тип связи между двумя соседними элементами последовательности обеспечивается из выбора множества Д* (оно не содержит отношений, связанных с другими связью «один-ко-многим»).

Выберем последовательно все отношения из множества R\ R*. Как показано ранее, для каждого такого отношения Д^ существует последовательность (Rn,..., Rin), Rn = Д^, Rin — Щ (Щ принадлежит і?*), такая что каждый предыдущий элемент последовательности связан с последующим связью «один-ко-многим» или «один-к-одному».

Согласно алгоритма проверки свойства соединения без потерь [2] выпишем таблицу проверки свойства:

Аг A-n

Ri

R!

К

На пересечении строки, соответствующей отношению Ri и столбца, соответствующего атрибуту Ак, стоит «1», если Ак Є {Ri}, иначе «О».

Последовательно пройдем по всем элементам данной последовательности. Текущий элемент обозначим как Д^, последующий — как Дц*.+1). Из свойств данной последовательности вытекает, что Kik С {Дц/г+ц}. Таким образом, существует функциональная зависимость іДо+1) —ї Kik, а значит и іДо+1) -д {Rik}- Учитывая предыдущие отношения в данной последовательности, полу-чим, что Кі(к+1) -)• {Rn,Rik}.

Согласно [2], получим, что т.к. на пересечении строк Д^ и Дц*.+1) и столбцов, относящихся к атрибутам іДо+ц, стоят «1», то ячейки строки Дг(/с+і), соответствующие ячейкам, имеющим значение «1» в строке Д^ (это ячейки, соответствующие атрибутам {Rn,..., Rik}), также примут значение «1».

Таким образом, перебрав все отношения из Д \ Д*, получим, что каждому отношению Д* ИЗ Д* соответствует множество отношений < Rn, . . . , Rin >, при этом К* -д {Rn} U • • • U {Rin} и строка, соответствующая отношению Д*, содержит «1» в ячейках, соответствующих столбцам {Rn} U • • • U {Д^Д.

Теперь возьмем в качестве текущей строки таблицы проверки свойства со-едиения без потерь строку, соответствующую отношению R! и выберем все отношения из Д* \ Д'. Для каждого Ri из Д* \ Д' из [2] и п.2 условия следует, что в таблицу будет добавлена строка, содержащая «1» в столбцах, соответствующих множествам атрибутов К' и ДД Далее, т.к. имеются соответствующие функциональные зависимости, получаем значение «1» в колонках, значения которых равны «1» в текущей строке таблицы и в колонках, соответствующих атрибутам

Математические структуры и моделирование. 2004. Вып. 13.

169

Таким образом, последовательно пройдя все отношения из Л* \ Л', получим что все ячейки текущей строки таблицы имеют значение «1». Значит, согласно алгоритма [2], множество отношений схемы обладает свойством соединения без потерь.

4. Заключение

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

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

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

Литература

1. Мейер Д., Теория реляционных баз данных. М.: Мир, 1987.

2. Ульман Дж., Основы систем баз данных. М.: Финансы и статистика, 1983

3. Чаудхури С., Дайал У., Гаити В., Технология баз данных в системах поддержки принятия решений. Открытые системы, №01/2002 (www.citfomm.ru \ consulting \ BI \ bd_decision \ )

!

i Надоели баннеры? Вы всегда можете отключить рекламу.