Изучение основных алгоритмов теории реляционных баз данных, страница 8

Рис 4.1. Редуцирование слева

Алгоритм PRED(F*)

Вход:    F* - множество ФЗ.

Выход: F - редуцированное справа покрытие F*.

Begin

    F := F*;

    For  каждая ФЗ XY* do

        For каждый атрибут А из Y do

            If  PRF (F-{ XY }{ X→ (Y-A)},  XA) then

                 Удалить А из Y  в XY;

     Удалить из F все зависимости вида  XØ;

     Return(F)

End.

Рис. 4.2, Редуцирование справа


Приложение 5

Проверка свойства сохранения F

Пусть F - множество ФЗ, заданных на атрибутах множества R,  ρ = {Ri,  i = 1,..., m} - декомпозиция множества R (),  - множество сохраняемых (поддерживаемых) декомпозицией ρ ФЗ.

Декомпозиция ρ сохраняет все ФЗ из F (далее просто сохраняет F), если Fρ ≡ F.

Поскольку всегда верно F |= Fρ, то для проверки данного свойства достаточно установить выводимость Fρ |= F. Если множество Fρ известно, то эту выводимость легко проверить, используя     алгоритм   PRF (см. прил. 2). Чаще всего множество Fρ неизвестно. Выполнять его построение, исходя из F, R и ρ, нецелесообразно, поскольку эта   задача   является труднорешаемой (имеет неполиномиальную сложность по времени). В этом случае удобно воспользоваться алгоритмами PSX+ (рис. 5.1), PPRF (рис. 5.2).

Алгоритм PSX+ позволяет вычислить Х+ над Fρ, исходя из заданных F, ρ и X. В строке 5 алгоритма PSX+ вычисляется замыкание  над F, для чего используется алгоритм SX+ (см. прил.2).

Алгоритм PPRF устанавливает выводимость  Fρ |= XY . Применение   его   к   каждой   ФЗ XY    позволяет проверить выполнение выводимости Fρ |= F.

Алгоритмы     PSX+,  PPRF имеют полиномиальную сложность по времени.

Алгоритм  PSX+(F, ρ, X)

Вход: F - множество ФЗ, заданных на Ri;

          ρ = {Ri, i = 1,..., m} - декомпозиция множества ;

         X - подмножество множества R.

Выход: Замыкание X над Fρ.

Begin

    Z := X;

    While Z изменяется do

         For  каждый   do

                Z := (SX+(, F) )

    Return (Z)

End .    

Рис. 5.1

АлгоритмPPRF(F, ρ, X)

Вход:  F - множество ФЗ, заданных на Ri;

           ρ = {Ri, i = 1,..., m} - декомпозиция множества ;

          X.

Выход: истина, если Fρ |= XY , ложь в противном случае.

Begin.

     If PSX+( F, ρ, X) then return (TRUE)

                                         else return (FALSE)

End.