Функциональные зависимости: замыкание, эквивалентность и правила вывода — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Построение)
(Построение)
Строка 15: Строка 15:
 
     changed = false
 
     changed = false
 
     '''for''' f in closure:
 
     '''for''' f in closure:
        '''for''' rule in rules:    //rules - правила вывода
+
      '''for''' rule in rules:    //rules - правила вывода
            new_f = rule.apply(f)
+
          new_f = rule.apply(f)
            changed = closure.add(new_f)    //add - возвращает true, если элемент был добавлен, false - иначе
+
          changed = closure.add(new_f)    //add - возвращает true, если элемент был добавлен, false - иначе
 
   '''return''' closure
 
   '''return''' closure
  
 
=== Эквивалентность множеств функциональных зависимостей ===
 
=== Эквивалентность множеств функциональных зависимостей ===
 
TODO
 
TODO

Версия 22:56, 28 декабря 2020

Функциональные зависимости

Определение и примеры

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

Замыкание множества функциональных зависимостей

Определение:
Замыкание множества функциональных зависимостей [math]S[/math] - множество всех функциональных зависимостей, обозначаемое [math]S^+[/math], которые следуют из заданного множества функциональных зависимостей [math]S[/math].

Построение

Set<E> buildClosure(s: Set<E>): 
  closure = Set<E>(s.addAll())
  changed = true
  while (changed): 
    changed = false
    for f in closure:
      for rule in rules:     //rules - правила вывода
          new_f = rule.apply(f)
          changed = closure.add(new_f)    //add - возвращает true, если элемент был добавлен, false - иначе
  return closure

Эквивалентность множеств функциональных зависимостей

TODO