Функциональные зависимости: замыкание атрибутов, неприводимые множества функциональных зависимостей, их построение — различия между версиями
Darkey (обсуждение | вклад) (→Замыкание атрибутов) |
Darkey (обсуждение | вклад) (→Замыкание атрибутов) |
||
Строка 1: | Строка 1: | ||
== Замыкание атрибутов == | == Замыкание атрибутов == | ||
− | {{|definition= | + | {{Определение |
+ | |definition= | ||
Замыкание множества атрибутов <tex>X</tex> над множеством ФЗ <tex>S</tex> - максимальное по включению множество атрибутов <tex>X^+_S</tex> функционально зависящих от <tex>S</tex>. | Замыкание множества атрибутов <tex>X</tex> над множеством ФЗ <tex>S</tex> - максимальное по включению множество атрибутов <tex>X^+_S</tex> функционально зависящих от <tex>S</tex>. | ||
}} | }} | ||
Строка 9: | Строка 10: | ||
{{Теорема | {{Теорема | ||
|id=proposalfirstcorrect | |id=proposalfirstcorrect | ||
− | |statement=<tex>A \to B \in S^+ \ | + | |statement=<tex>A \to B \in S^+ \Leftrightarrow B \subset A^+_S</tex> |
|proof= По определению замыкания атрибутов. | |proof= По определению замыкания атрибутов. | ||
}} | }} | ||
Данная теорема позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий ФЗ: <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</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>. | + | Даны множества <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>. |
+ | |||
+ | {{Следствие | ||
+ | |id=proposalfirstcorrect | ||
+ | |statement=<tex>X</tex>- надключ <tex> \Leftrightarrow X^+ </tex> - множество всех атрибутов | ||
+ | |proof= По определению замыкания атрибутов. | ||
+ | }} | ||
+ | |||
+ | Данное следствие позволяет формально выделять ключи и надключи. | ||
=== Построение === | === Построение === | ||
Строка 31: | Строка 40: | ||
<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> | <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 | + | Доказательство от обратного: Пусть <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>. |
}} | }} |
Версия 10:49, 29 декабря 2020
Замыкание атрибутов
Определение: |
Замыкание множества атрибутов | над множеством ФЗ - максимальное по включению множество атрибутов функционально зависящих от .
Максимальный размер равен числу атрибутов в отношении.
Основное свойство замыкания множества атрибутов
Теорема: |
Доказательство: |
По определению замыкания атрибутов. |
Данная теорема позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий ФЗ:
Даны множества и и пусть для простоты , необходимо проверить является ли эквивалентным . Для этого достаточно построить замыкание и по теореме проверить все фз из , которые отсутствуют в . Если доказать, что из выводимы все базовые правила , то их замыкания ФЗ будут совпадать, следовательно, два множества эквивалентны. Например, пусть , тогда если , то .
{{Следствие |id=идентификатор (необязательно), пример: proposal1. |author=Автор утверждения (необязательно) |about=О чем утверждение (необязательно) |statement=утверждение |proof=доказательство (необязательно) }}
Данное следствие позволяет формально выделять ключи и надключи.
Построение
= X do foreach : if then while есть изменения
Теорема: |
Доказательство: |
1) |