Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Лекции по теории проектирования баз данных (БД)

       Пусть дано отношение R , а X , Y и Z подмножества  R  .  Предположим,
  что отношению удовлетворяет  XY  ->  Z  и  X  ->  Y  .  Согласно  аксиоме
  псевдотранзитивности получим XX -> Z или X -> Z.

       Если даны аксиомы рефлексивности, пополнения и  псевдотранзитивности,
  то из них можно вывести  все  остальные.  Иногда  их  называют  аксиомами
  Армстронга.

       Пусть F-множество F-зависимостей для отношения  R  .  Замыкание  F  ,
  обозначаемое F+ , - это наименьшее содержащее F множество, такое что  при
  применении к  нему  аксиом  Армстронга  нельзя  получить  ни  одной  F  -
  зависимости, не принадлежащей F.

       Пример.

       Пусть F = {AB -> C, C -> B } - множество F-зависимостей на R(ABC). F+
  = {A -> A, AB -> A, AC -> A, ABC -> A, B -> B, AB -> B, BC -> B,  ABC  ->
  B, C -> C, AC -> C, BC -> C, ABC -> C, AB -> AB, ABC -> AB, AC -> AC, ABC
  -> AC, BC -> BC, ABC -> BC, ABC -> ABC, AB -> C, AB -> AC, AB ->  BC,  AB
  -> ABC, C -> B, C -> BC, AC -> B, AC -> AB}

    Таким образом, если известно множество  F-зависимостей  удовлетворяющих
отношению  R,  можно  найти  все  F-  зависимости,   удовлетворяющие   этому
отношению. Говорят, что F = X -> Y ,если         X -> Y [pic] F+ .


          Лекция 3

    Получение замыкания F+ не обязательно для установления       F =  X  ->
Y.

       Для этого достаточно воспользоваться алгоритмом MEMBER .

       Алгоритм MEMBER.

       Вход: Множество F-зависимостей F и F-зависимость X -> Y.

    Выход: истина, если F = F = X -> Y, ложь в противном случае.


         MEMBER(F, X -> Y)

       begin

         if Y [pic] CLOSURE(X,F) then return (истина)

         else return(ложь)
       end

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

       Алгоритм CLOSURE.

       Вход: Множество атрибутов Х и множество F-зависимостей F.

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


         CLOSURE(X,F)

       begin


         OLDDEP = 0; NEWDEP = X

       while NEWDEP [pic] OLDDEP do begin


         OLDDEP = NEWDEP

       for каждая F- зависимость W -> Z в F do

       if NEWDEP [pic] W then


         NEWDEP = NEWDEP [pic] Z

       end

  return(NEWDEP)
  end


         Пример работы алгоритма MEMBER

       Пусть F = {НОМЕР_РЕЙСА ДАТА_ВЫЛЕТА -> КОЛИЧЕСТВО_МЕСТ,

       НОМЕР_РЕЙСА -> ПУНКТ_ОТПРАВЛЕНИЯ, НОМЕР_РЕЙСА ДАТА_ВЫЛЕТА -> ПИЛОТ} и
  необходимо установить F |= НОМЕР_РЕЙСА -> ПИЛОТ

       Используем для этого алгоритм MEMBER



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

       Для  формирования  БД,  как  системы  взаимосвязанных  отношений   на
  основании  известных  (из   семантических   соображений)   F-зависимостей
  необходимо  иметь  способ  минимизации   первоначального   множества   F-
  зависимостей.  Это  необходимо  для  минимизации   дублирования   данных,
  обеспечения их согласованности и целостности. Теоретической  основой  для
  построения  такого  способа  является  теория   покрытий   функциональных
  зависимостей.

       Определение.

       Два множества F-зависимостей F и G  над  отношением  R  эквивалентны,
  [pic] ,  если  F+  =  G+  .  Если  [pic],  то  F  есть  покрытие  для  G.
  Предполагается, что имеет смысл рассматривать в качестве  покрытий  такие
  множества F, которые не превосходят множество G по числу F-зависимостей.

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

  Алгоритм EQUIV
  Вход: два множества F- зависимостей F и G.
  Выход: истина, если [pic]; ложь в противном случае.

         EQUIV(F,G)

       begin

       v=DERIVES(F,G) and DERIVES(G,F);
       return(v)
       end


       Здесь DERIVES алгоритм проверяет условие F |= G и имеет вид:

  Алгоритм DERIVES
  Вход: два множества F- зависимостей F и G.
  Выход: истина, если F |= G; ложь в противном случае.

         DERIVES(F,G)

       begin

       v= истина
       for каждая F-зависимость X -> Y из G do
          v = v and MEMBER(F, X -> Y)

       end
       return(v)
       end

       Множество F-зависимостей F не  избыточно,  если  у  него  нет  такого
  собственного подмножества F’ , что F’[pic]F .  Если  такое  множество  F’
  существует, то F избыточно. F является не избыточным покрытием G, если  F
  есть покрытие G и F не избыточно.

       Пример. Пусть G = { AB -> C, A -> B, B -> C, A ->  C}.  Множество  F=
  {AB -> C, A -> B, B -> C} эквивалентно G, но избыточно, потому что  F’  =
  {A -> B, B -> C} также является покрытием G.  Множество  F’  представляет
  собой не избыточное покрытие G.

       Действительно, согласно алгоритму EQUIV [pic] , так как  DERIVES(F,G)
  дает истину и DERIVES(G,F) так же  истина.  То  же  самое  можно  сказать
  относительно F’ и G.


         (Подробнее)

       Множество F не избыточно, если в нем не существует F-зависимости X ->
  Y, такой, что F - { X -> Y} |= X  ->  Y  .  Назовем  F-зависимость  из  F
  избыточной в F , если F - { X -> Y} |= X -> Y.

       Для  любого   множества   F-зависимостей   G   существует   некоторое
  подмножество F, такое, что F является не избыточным покрытием G.  Если  G
  не избыточно, то F=G. Для определения не избыточного покрытия множества F-
   зависимостей G существует алгоритм NONREDUN, который имеет вид:

  Вход: множество F-зависимостей G.
  Выход: не избыточное покрытие G.

         NONREDUN(G)

       begin

         F=G
         for каждая зависимость X -> Y из G do

           if MEMBER(F-{X->Y],X->Y) then F=F-{X->Y}

         end

         return(F)

       end

       Пример: Пусть G= {A -> B, B -> A, B -> C, A -> C}.

       Результатом работы алгоритма является множество:

         {A -> B, B -> A, A -> C}.
       Если бы G было представлено в порядке {A -> B, A -> C, B -> A , B  ->
  C} , то результатом работы алгоритма было бы

         {A -> B, B -> A, B -> C}.
       Из примера видно, что множество F-зависимостей G  может  иметь  более
  одного неизбыточного покрытия. Могут  так  же  существовать  неизбыточные
  покрытия G, не содержащиеся в G. В приведенном примере таким неизбыточным
  покрытием будет множество

         F = {A -> B, B -> A, AB -> C}.

       Если F-неизбыточное множество F-зависимостей, то в нем  нет  “лишних”
  зависимостей в том смысле, что нельзя уменьшить F , удалив  некоторые  из
  них.  Удаление  любой  F-зависимости  из  F  приведет  к  множеству,   не
  эквивалентному  F.  Однако  размер  можно  уменьшить,  удалив   некоторые
  атрибуты F-зависимостей F.

       Определение. Пусть F-множество F-зависимостей над R и X -> Y есть  F-
  зависимость из F. Атрибут  А  из  R  называется  посторонним  в  X  ->  Y
  относительно F, если

 1.  [pic] и (F - {X -> Y}) [pic] {Z -> Y}[pic]F или
 1.  Y = AW, Y[pic]W и (F - {X -> Y}) [pic] {X -> W}[pic]F.
       Иными словами, А - посторонний атрибут, если он может быть удален  из
  правой или левой части X -> Y без изменения замыкания F.

       Пример. Пусть G = {A -> BC,B  ->  C,AB  ->  D}.  Атрибут  С  является
  посторонним в правой части A -> BC, а атрибут B - в левой части AB -> D.

       Определение. Пусть F - множество  F-зависимостей  над  R  и  X  ->  Y
  принадлежит F. F-зависимость X -> Y называется редуцированной слева, если
  Х не содержит постороннего атрибута А и редуцированной справа, если Y  не
  содержит атрибута А , постороннего  для  X  ->  y.  Зависимость  X  ->  Y
  называется редуцированной, если она  редуцирована  слева  и  справа  и  Y
  [pic]. Редуцированная слева  F-зависимость  называется  также  полной  F-
  зависимостью.

       Определение. Множество  F-зависимостей  F  называется  редуцированным
  (слева,  справа),   если   каждая   F-зависимость   из   F   редуцирована
  (соответственно слева, справа).

       Пример. Множество G = {A ->  BC,  B  ->  C,  AB  ->  D}  не  является
  редуцированным ни справа, ни слева. Множество G1 = {A -> BC, B -> C, A ->
  D} редуцировано слева, но не справа, а G2 = {A -> B, B ->  C,  AB  ->  D}
  редуцировано справа, но не слева. Множество G3 = {A -> B, B -> C, A -> D}
  редуцировано слева и справа, следовательно,  поскольку  правые  части  не
  пусты, редуцировано.

       Для нахождения редуцированных покрытий используется алгоритм:


         REDUCE

  Вход: множество F-зависимостей G.
  Выход: редуцированное покрытие G.

         REDUCE(G)

  begin
    F = RIGHTRED(LEFTRED(G))
    удалить из F все F-зависимости вида X -> [pic]
    return(F)
  end

       здесь  RIGHTRED  и  LEFTRED  алгоритмы  редуцирования  соответственно
  справа и слева, которые имеют вид:


         RIGHTRED

  Вход: множество F-зависимостей G.
  Выход: редуцированное справа покрытие G.

         RIGHTRED(G)

       begin

         F = G
         for каждая зависимость X -> Y из G do

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

           if MEMBER(F - {X -> Y} [pic] {X ->(Y - A)}, X -> A) then

           удалить А из Y в X -> Y из F[pic]

          end

         end

        return(F)
      end

  Алгоритм LEFTRED
  Вход: множество F-зависимостей G.
  Выход: редуцированное слева покрытие G.
  Begin
   F = G
   for каждая зависимость X -> Y из G do
    for каждый атрибут А из Х
1234
скачать работу

Лекции по теории проектирования баз данных (БД)

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ