Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен / database.pdf
Скачиваний:
43
Добавлен:
06.02.2018
Размер:
583.8 Кб
Скачать

http://slava.fateback.com

31

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

4.Структура логических записей приводится к 3НФ.

2.8Построение канонической модели реляционного типа

2.8.1 Построение замыканий

При формировании схемы БД основным является определение принадлежности функциональной зависимости замыканию множества функциональных зависимостей F +. Его построение имеет экспоненциальную сложность. Поэтому ответ на вопрос о принадлежности целесообразнее давать с помощью замыкания множества атрибутов.

Определение 2.26 Замыканием X+ множества атрибутов зовется совокупность атрибутов Aj: X → Aj F +.

Утверждение 2.2 X → Y F + Y X+.

 

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

Докажем

необходимость (

 

). Пусть Y

=

{

A

, A , . . .

A

n}

. Тогда по

 

 

 

 

 

 

F

+

 

 

 

 

 

 

1

2

 

 

 

X

+

.

правилу декомпозиции

X

A

j

 

для

всех j

= 1..n. Тогда по определению Y

 

 

 

 

 

 

 

 

+

.+Тогда в силу определения имеем X

 

 

 

 

Докажем достаточность ( ). Пусть Y

 

X

 

 

→ Aj, j = 1..n.

По правилу объединения получаем X → Y F .

 

 

 

 

 

 

 

 

 

 

 

 

Алгоритм построения замыкания множества атрибутов

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 0. X0

= X. Поскольку имеется аксиома рефлексивности, X X+.

 

 

 

 

 

 

 

 

Шаг i. Последовательно просматриваются зависимости из F 4 (просмотр множества — это

одна итерация алгоритма). Если для текущей зависимости Y → Z F выполнено Y

Xi−1,

X

= X , и

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

то Xi = Xi−1

Z. Если на какой-либо итерации не было сделано ни одной подстановки, то

+

i

алгоритм закончен.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Замечание. Реализацию данного алгоритма на Object Pascal вы можете найти на страничке http://slava.fateback.com/work/docs/database/bdhelper.htm

Теорема 2.1 Алгоритм корректно формирует множество X+.

Доказательство, чтобы не лишать читателя удовольствия получить его самостоятельно, опускается.

2.8.2Построение минимального покрытия множества функциональных зависимостей

Определение 2.27 Два множества функциональных зависимостей F и G зовутся эквивалентными, если F + = G+.

http://slava.fateback.com

32

Алгоритм проверки эквивалентности множеств функциональных зависимостей

Шаг 1. Последовательно просматриваются зависимости из F . Для текущей зависимости X → Y F строится замыкание X в множестве G, XG+. Если Y F Y XG+, то будем говорить, что F выводимо из G, F G.

Шаг 2. Последовательно просматриваются зависимости из G. Для текущей зависимости W → V F строится замыкание W в множестве F , WF+. Если V F V WF+, то будем говорить, что G выводимо из F , G F .

Вывод: если множества выводятся друг из друга, то они эквивалентны.

Этот алгоритм тоже не экспоненциальный — скорость сходимости кубическая.

Замечание. Реализацию данного алгоритма на Object Pascal вы можете найти на страничке http://slava.fateback.com/work/docs/database/bdhelper.htm

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

Доказательство. Пусть X → Y F, Y = {A1, A2, . . . An}. Тогда по правилу декомпозиции множество функциональных зависимостей X → Aj(j = 1..n) выводимо из F . По правилу объединения F выводимо из построенного множества.

Определение 2.28 Множество функциональных зависимостей F зовется минимальным покрытием, если

1.все зависимости содержат только один атрибут в правой части;

2.никакая зависимость не является избыточной, то есть ни для какой зависимости X → Aj множество F не эквивалентно F \ {X → Aj};

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

для какой зависимости X → Aj множество функциональных зависимостей (F \{X → Aj}) S{Z → Aj} не эквивалентно F .

Алгоритм построения минимального покрытия

Шаг 1. По правилу декомпозиции множество F преобразуется к множеству зависимостей с одним атрибутом в правой части.

Шаг 2. Последовательно просматриваются зависимости из F . Для текущей зависимости X → Aj проверяется эквивалентность исходного множества F множеству без этой зависимости (G = F \ {X → Aj}). Если они эквивалентны, зависимость удаляется из F .

Поскольку множества отличаются только в одном элементе, нет необходимости использовать алгоритм проверки эквивалентности полностью — достаточно применить его для данной зависимости: построить XG+ и проверить Aj XG+ — если да, то удалить зависимость.

Шаг 3. Последовательно просматриваются зависимости из F . Для текущей зависимости X → Aj из X удаляется по одному атрибуту и проверяется эквивалентность исходного множества F и множества с новой зависимостью вместо данной. Если они эквивалентны, то атрибут не возвращается.

Опять же, различие множеств заключается в одном элементе, поэтому алгоритм применяется для него. Полагаем G = (F \ {X → Aj}) S{Z → Aj}, где Z → X, и проверяем принадлежность Aj замыканию ZF+, поскольку Aj XG+ в силу аксиомы пополнения.

http://slava.fateback.com

33

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

Замечание. Реализацию данного алгоритма на Object Pascal вы можете найти на страничке http://slava.fateback.com/work/docs/database/bdhelper.htm

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

Пример. Пусть F = {A → B, B → C, A → C}.

Шаг 1. Выполнен.

Шаг 2. Удалим A → B. Строим A+ = AC. B / A+, и значит данная зависимость неизбыточна. Удалим B → C. Строим B+ = B. C / B+, и значит данная зависимость тоже неизбыточна. Удалим A → C. Строим A+ = ABC. A+, значит зависимость избыточна и не возвращается.

Шаг 3. Тоже выполнен, поскольку левые части состоят из одного атрибута.

2.8.3Декомпозиция схем отношений

Дано: R схема отношений, определенная на множестве атрибутов U = {A1, A2, . . . , An}, множество функциональных зависимостей F .

Определение 2.29 Декомпозицией ρ(R1, R2, . . . , Rk) схемы R назвается совокупность под-

k

SS

схем R1, R2, . . . , Rk таких, что Ri = R ( понимается как объединение атрибутов).

i=1

Замечание. Могут найтись такие i и j, что Ri TRj 6= .

Замечание. При построении 2НФ и 3НФ была использована декомпозиция схем отношений и сформулированы ее преимущества.

Соединение без потерь информации Дано: R схема отношений, определенная на множестве атрибутов U = {A1, A2, . . . , An}, множество функциональных зависимостей F .

Для произвольной декомпозиции ρ(R1, R2, . . . , Rk) определяется множество mρ(r) = πR1 (r) ./ πR2 (r) ./ . . . ./ πRk (r), где r — реализация схемы R.

Определение 2.30 Декомпозиция ρ(R1, R2, . . . , Rk) удовлетворяет свойству соединения без потерь информации, если для любой реализации r, удовлетворяющей зависимостям из F , выполнено mρ(r) = r.

Утверждение 2.4 Для любой реализации r и декомпозиции ρ(R1, R2, . . . , Rk) справедливо r mρ(r).

http://slava.fateback.com

34

Доказательство. Возьмем картеж t r, при этом t[Ri] πRi (r). По свойству операции естественного соединения, картежи t[Ri] склеятся по одинаковым полям и t mρ(r).

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

Алгоритм проверки соединения без потерь информации

Шаг 1. Строится таблица из k строк и n столбцов. На пересечении i-ой строки и j-го столбца ставится aj, если Aj Ri, и bij в противном случае.

Шаг i. Выполняется очередная итерация: последовательно просматривается множество F . Для текущей зависимости X → Y выбираются строки, совпадающие по атрибутам из X. Если для какого-либо атрибута Aj Y в какой-либо строке стоит aj, то во всех выбранных строках значения bij меняются на aj. Если после очередной подстановки в таблице получится строка из aj, то декомпозиция ρ обладает свойством соединения без потерь информации. Если же после выполнения очередной итерации не было сделано ни одной подстановки и таблица не содержит строку из aj, то декомпозиция ρ не обладает свойством соединения без потерь информации.

Пример. Пусть имеется множество атрибутов U = {A1, A2, A3}, множество функциональных зависимостей F = {A2 → A3} и декомпозиция ρ = ({A1, A2}, {A2, A3}).

Выполним шаг 1:

A1 A2 A3

R1

a1

a2

b13

R2

b21

a2

a3

Выполним шаг два. Выбираем зависимость A2 → A3. По атрибутам A2 совпадают обе строки (так как содержат во втором столбце одно и то же значение a2). Во второй строке в атрибуте A3 содержится a3, которое переносится в первую строку, на место b13:

 

A1

A2

A3

R1

a1

a2

a3

R2

b21

a2

a3

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

Практически введение букв с нижними индексами в качестве элементов таблицы существенно загромождает ее и делает трудной для восприятия. На этапе практической проверки выполнения свойства достаточно вместо aj в нужной строке ставить «+», и оставлять пустое место в противном случае. Однако использование букв тоже отвечают сущности алгоритма — что и будет показано далее.

Теорема 2.2 Алгоритм корректно проверяет выполнение свойства соединения без потерь информации.

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

1.Пусть результирующая таблица алгоритма не содержит строки, состоящей полностью из aj. Достаточно найти хотя бы одну реализацию r, для которой не будет выполнено mρ(r) = r. В качестве такой реализации возьмем результирующую таблицу алгоритма. Данная таблица удовлетворяет всем зависимостям из F , так как несоответствия устраняются на втором шаге.

Рассмотрим mρ(r). По построению каждая проекция πRi (r) будет содержать хотя бы

http://slava.fateback.com

35

одну строку из aj — причина этого в первом шаге алгоритма. После выполнения операции естественного соединения эти картежи склеятся, и mρ(r) будет содержать строку из aj. Однако результирующая таблица ее не содержит, и по этому mρ(r) 6= r.

2. Пусть результирующая таблица алгоритма содержит строку из aj. Рассмотрим про-

изводящую функцию M0 = {a1a2 . . . an | bij . . . (R(ω1)

R(ω2)

. . .

R(ωk))}, где ωI

i-ая строка исходной таблицы алгоритма.

V

V

V

Пример. Рассмотрим предыдущий пример и первую таблицу его алгоритма. Пусть

отношение R имеет вид:

A1 A2 A3

a11 a12 a13

a21 a22 a23

Тогда R(ω1) будет таким:

A1 A2 A3

a11 a12 *

a21 a22 *

Здесь «*» обозначает произвольное значение. Аналогично, R(ω2) будет таким:

A1 A2 A3

* a12 a13

*a22 a23

Витоге, M0 получается таким:

A1 A2 A3

a11 a12 a13

a21 a22 a23

Поясним получение M0. Берем первую «строчку» R(ω1) и пересекаем ее с первой

«строчкой» R(ω2) — благодаря звездочкам в третьем столбце R(ω1) может стоять a13, а в первом столбце R(ω2) a11, по второму столбцу они совпадают в любом случае. Получается первая строка M0. Дальше берем первую «строчку» R(ω1) и вторую R(ω2); их пересечение пусто, поскольку по второму атрибуту любые две строчки из этих семейств различаются. Аналогичными рассуждениями строится вторая строка

M0.

Доказательство того, что mρ(r) M0, аналогично доказательству предыдущего утверждения. После выполнения очередной подстановки в ходе алгоритма какая-либо ωI будет содержать больше значений aj. Однако это не сокращает число картежей, сформированных по производящей функции, поскольку появившееся дополнительное ограничение уже содержалось в других строках (например, в той, за счет которой осуществилась подстановка). Таким образом M1 M0, где M1 строится по тем же правилам, что и M0, но только уже на основе новой таблицы алгоритма.

По условию, последняя таблица содержит строчку из aj. Тогда в конъюнкции, определяющей Mm, будет ограничение R(a1, a2, . . . , an), которое гарантирует, что во множестве Mm, соответствующем результирующей таблице, не появится ни одного картежа, который не принадлежал бы реализации r. То есть mρ(r) Mm r mρ(r), или r = mρ(r).

Соседние файлы в папке экзамен