Функциональные зависимости: замыкание, эквивалентность и правила вывода — различия между версиями
Darkey (обсуждение | вклад) (→Оценка мощности замыкания) |
Darkey (обсуждение | вклад) (→Оценка мощности замыкания) |
||
| Строка 37: | Строка 37: | ||
=== Оценка мощности замыкания === | === Оценка мощности замыкания === | ||
Для начала оценим количество тривиальных ФЗ на <tex>n</tex> атрибутах. Количество способов выбрать <tex>k</tex> атрибутов из <tex>n</tex> для левой части ФЗ - <tex>{\binom {n}{k}}</tex>, количество способов выбрать непустое подмножество из левой части для правой - <tex>2^k - 1</tex>. Известно, что <tex>\sum _{k=0}^{n}{\binom {n}{k}}x^{k}=(1+x)^{n}</tex>. Значит количество тривиальных ФЗ: <tex>\sum _{k=0}^{n}{\binom {n}{k}}(2^{k} - 1)=O(3^{n})</tex>. | Для начала оценим количество тривиальных ФЗ на <tex>n</tex> атрибутах. Количество способов выбрать <tex>k</tex> атрибутов из <tex>n</tex> для левой части ФЗ - <tex>{\binom {n}{k}}</tex>, количество способов выбрать непустое подмножество из левой части для правой - <tex>2^k - 1</tex>. Известно, что <tex>\sum _{k=0}^{n}{\binom {n}{k}}x^{k}=(1+x)^{n}</tex>. Значит количество тривиальных ФЗ: <tex>\sum _{k=0}^{n}{\binom {n}{k}}(2^{k} - 1)=O(3^{n})</tex>. | ||
| − | Заметим, что при построении замыкания нельзя не учитывать тривиальные зависимости, так как при применении правил вывода, правила композиции, например, к нетривиальной и тривиальной зависимостям можно получить в итоге нетривиальную зависимость. Получается, что мощность порядка <tex>O(m3^n)</tex>, где <tex>m</tex> - | + | Заметим, что при построении замыкания нельзя не учитывать тривиальные зависимости, так как при применении правил вывода, правила композиции, например, к нетривиальной и тривиальной зависимостям можно получить в итоге нетривиальную зависимость. Получается, что мощность порядка <tex>O(m3^n)</tex>, где <tex>m</tex> - количество базовых нетривиальных зависимостей. |
На практике замыкания ФЗ не применимы, так как мощность в реальных приложениях слишком велика. | На практике замыкания ФЗ не применимы, так как мощность в реальных приложениях слишком велика. | ||
Версия 22:43, 15 января 2021
Содержание
Функциональные зависимости
Определение и примеры
Правила вывода функциональных зависимостей
Замыкание множества функциональных зависимостей
| Определение: |
| Замыкание множества функциональных зависимостей - множество всех функциональных зависимостей, обозначаемое , которые следуют из заданного множества функциональных зависимостей . |
Построение
Set<E> buildClosure(s: Set<E>):
closure = Set<E>(s)
changed = true
while (changed):
changed = false
for f in closure:
for rule in rules: //rules - правила вывода
new_f = rule.apply(f, closure)
changed = closure.add(new_f) //add - возвращает true, если элемент был добавлен, false - иначе
return closure
Эквивалентность множеств функциональных зависимостей
Здесь и далее - множества функциональных зависимостей.
| Определение: |
| слабее ( накрывает ) тогда и только тогда, когда является подмножеством : |
| Определение: |
| эквивалентно : |
Оценка мощности замыкания
Для начала оценим количество тривиальных ФЗ на атрибутах. Количество способов выбрать атрибутов из для левой части ФЗ - , количество способов выбрать непустое подмножество из левой части для правой - . Известно, что . Значит количество тривиальных ФЗ: . Заметим, что при построении замыкания нельзя не учитывать тривиальные зависимости, так как при применении правил вывода, правила композиции, например, к нетривиальной и тривиальной зависимостям можно получить в итоге нетривиальную зависимость. Получается, что мощность порядка , где - количество базовых нетривиальных зависимостей.
На практике замыкания ФЗ не применимы, так как мощность в реальных приложениях слишком велика.
Задача минимизации ФЗ
Постановка задачи
Найти минимальное множество ФЗ эквивалентное заданному. То есть необходимо найти множество ФЗ такое, что замыкание и совпадают и множество имеет меньшую мощность, чем . Это позволит снизить нагрузку на базу данных. Но такой подход к решению задачи не применим на практике из-за большой мощности замыкания.