Функциональные зависимости: замыкание атрибутов, неприводимые множества функциональных зависимостей, их построение — различия между версиями
(→Выводы о НМФЗ) |
Darkey (обсуждение | вклад) (→Замыкание атрибутов) |
||
Строка 15: | Строка 15: | ||
Данная теорема позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий ФЗ: <br/> | Данная теорема позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий ФЗ: <br/> | ||
− | Даны множества <tex>S</tex> и <tex>P</tex> и пусть для простоты <tex>P \subset S</tex>, необходимо проверить является ли <tex>P</tex> эквивалентным <tex>S</tex>. Для этого достаточно построить замыкание <tex>P^+_S</tex> и по теореме проверить все | + | Даны множества <tex>S</tex> и <tex>P</tex> и пусть для простоты <tex>P \subset S</tex>, необходимо проверить является ли <tex>P</tex> эквивалентным <tex>S</tex>. Для этого достаточно построить замыкание <tex>P^+_S</tex> и по теореме проверить все функциональные зависимости из <tex>S</tex>, которые отсутствуют в <tex>P</tex>. Если доказать, что из <tex>P</tex> выводимы все базовые правила <tex>S</tex>, то их замыкания ФЗ будут совпадать, следовательно, два множества эквивалентны. Например, пусть <tex>A \to B \in S, A \to B \not\in P </tex>, тогда если <tex>B \in P_S^+</tex>, то <tex> A \to B \in P^+</tex>. |
{{Утверждение | {{Утверждение | ||
Строка 21: | Строка 21: | ||
'''Следствие''':<br/><tex>X</tex>- надключ <tex> \Leftrightarrow X^+ </tex> - множество всех атрибутов | '''Следствие''':<br/><tex>X</tex>- надключ <tex> \Leftrightarrow X^+ </tex> - множество всех атрибутов | ||
|proof= | |proof= | ||
− | <tex>(=>)</tex><br>По определению замыкания атрибутов, | + | <tex>(=>)</tex><br>По определению замыкания атрибутов, так как все атрибуты функционально зависят от <tex>X</tex>.<br/> |
<tex>(<=)</tex><br><tex>X^+</tex> - множество всех атрибутов и по теореме <tex>\exists \; X \to X^+</tex>, то по определению функциональной зависимости <tex>X</tex> соответствует ровно один <tex>X^+</tex> и значит <tex>X</tex> - надключ. | <tex>(<=)</tex><br><tex>X^+</tex> - множество всех атрибутов и по теореме <tex>\exists \; X \to X^+</tex>, то по определению функциональной зависимости <tex>X</tex> соответствует ровно один <tex>X^+</tex> и значит <tex>X</tex> - надключ. | ||
}} | }} | ||
Строка 39: | Строка 39: | ||
|proof= | |proof= | ||
1) <tex>X_S^+ \supset X_S^* </tex> <br> | 1) <tex>X_S^+ \supset X_S^* </tex> <br> | ||
− | <tex>A \subset X_S^* => X \to A</tex>(по правилу расщепления, | + | <tex>A \subset X_S^* => X \to A</tex>(по правилу расщепления, так как <tex>X_S^*</tex> изначально содержит в себе <tex>X</tex>) <tex>=> X \to B </tex>, то есть <tex>B</tex> входит в замыкание. <br> |
2) <tex>X_S^+ \subset X_S^* </tex> <br/> | 2) <tex>X_S^+ \subset X_S^* </tex> <br/> | ||
− | Доказательство от обратного: Пусть <tex>X_S^+ \not\subset X_S^* => \exists A: A \in X_S^+ \text{ and } A \not\in X_S^*.\; A \in X_S^+ => X \to A =></tex> есть вывод <tex> X \to X_1^+, ..., X_n^+ \to A</tex>. В этой цепочке найдём первую свежую ФЗ, то есть она не была в базовых ФЗ <tex>X</tex>. Такая | + | Доказательство от обратного: Пусть <tex>X_S^+ \not\subset X_S^* => \exists A: A \in X_S^+ \text{ and } A \not\in X_S^*.\; A \in X_S^+ => X \to A =></tex> есть вывод <tex> X \to X_1^+, ..., X_n^+ \to A</tex>. В этой цепочке найдём первую свежую ФЗ, то есть она не была в базовых ФЗ <tex>X</tex>. Такая функциональная зависимость точно есть в этой цепочке, например, <tex>X_n^+ \to A</tex>, так как <tex>A \in X_S^+ \text{ and } A \not\in X_S^* => </tex> такое правило не могло быть в <tex>X</tex>. Получается, что атрибут A не был добавлен в <tex>X^*_S</tex> в алгоритме, такое может быть только если атрибут A уже содержался в <tex>X => </tex> противоречие. |
}} | }} | ||
Версия 20:35, 8 января 2021
Содержание
Замыкание атрибутов
Определение: |
Замыкание множества атрибутов | над множеством ФЗ максимальное по включению множество атрибутов, обозначаемое , функционально зависящих от .
Максимальный размер равен числу атрибутов в отношении.
Основное свойство замыкания множества атрибутов
Теорема: |
Доказательство: |
По определению замыкания атрибутов. |
Данная теорема позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий ФЗ:
Даны множества и и пусть для простоты , необходимо проверить является ли эквивалентным . Для этого достаточно построить замыкание и по теореме проверить все функциональные зависимости из , которые отсутствуют в . Если доказать, что из выводимы все базовые правила , то их замыкания ФЗ будут совпадать, следовательно, два множества эквивалентны. Например, пусть , тогда если , то .
Утверждение: |
Следствие: - надключ - множество всех атрибутов |
- множество всех атрибутов и по теореме , то по определению функциональной зависимости соответствует ровно один и значит - надключ. |
Данное следствие позволяет формально выделять ключи и надключи.
Построение замыкания атрибутов
= X do foreach : if then while есть изменения
Теорема: |
Доказательство: |
1) |
Неприводимые множества функциональных зависимостей
Определение: |
Множество ФЗ
| неприводимо, если:
Определение: |
Множество ФЗ | минимально по включению, если ни одна функциональная зависимость из множества не может быть удалена из множества без изменения его замыкания .
Теорема: |
Для любого множества ФЗ существует эквивалентное неприводимое множество ФЗ (НМФЗ). |
Доказательство: |
Доказательство по построению:
|
Оценка времени построения
- Расщепление правых частей - линейно по размеру правых частей.
- Удаление атрибута . На данном этапе из одной ФЗ возможно получить множество ФЗ минимальных по включению. Синтетическая оценка множества потенциальных множеств минимальных по включению мощностью это . То есть на ФЗ с большой левой частью возможен экспоненциальный рост количества ФЗ с минимальной по включению левой частью. Но на реальных данных большая левая часть в ФЗ практически не встречается.
- Удаление правила . На этом этапе не добавляем ФЗ, а только удаляем, поэтому сложность этот этап не добавит. Заметим, что каждую ФЗ на этом этапе можно рассматривать лишь один раз, т.к. все операции по приведению множества к неприводимому сохраняют исходное замыкание ФЗ.
Замечания о НМФЗ
- Неприводимые множества ФЗ обычно много меньше множеств исходного множества ФЗ.
- Неприводимое множество ФЗ может не являться минимальным по мощности.