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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Замыкание атрибутов)
(Замыкание атрибутов)
Строка 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^+ \Leftrigtharrow B \subset A^+_S</tex>
+
|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->X_1^+, ..., X_n^+ \to A </tex> TODO
+
Доказательство от обратного: Пусть <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

Замыкание атрибутов

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


Максимальный размер [math]X^+_S[/math] равен числу атрибутов в отношении.

Основное свойство замыкания множества атрибутов

Теорема:
[math]A \to B \in S^+ \Leftrightarrow B \subset A^+_S[/math]
Доказательство:
[math]\triangleright[/math]
По определению замыкания атрибутов.
[math]\triangleleft[/math]

Данная теорема позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий ФЗ:
Даны множества [math]S[/math] и [math]P[/math] и пусть для простоты [math]P \subset S[/math], необходимо проверить является ли [math]P[/math] эквивалентным [math]S[/math]. Для этого достаточно построить замыкание [math]P^+_S[/math] и по теореме проверить все фз из [math]S[/math], которые отсутствуют в [math]P[/math]. Если доказать, что из [math]P[/math] выводимы все базовые правила [math]S[/math], то их замыкания ФЗ будут совпадать, следовательно, два множества эквивалентны. Например, пусть [math]A \to B \in S, A \to B \not\in P [/math], тогда если [math]B \in P_S^+[/math], то [math] A \to B \in P^+[/math].

{{Следствие
|id=идентификатор (необязательно), пример: proposal1. 
|author=Автор утверждения (необязательно)
|about=О чем утверждение (необязательно)
|statement=утверждение
|proof=доказательство (необязательно)
}}

Данное следствие позволяет формально выделять ключи и надключи.

Построение

[math]X_S^*[/math] = X
do
   foreach [math]A \gets B \in S[/math]:
      if [math]A \subset X_S^*[/math] then [math] X_S^* =  X_S^* \cup B[/math]
while есть изменения
Теорема:
[math]X^+_S = X^*_S[/math]
Доказательство:
[math]\triangleright[/math]

1) [math]X_S^+ \supset X_S^* [/math]
[math]A \subset X_S^* =\gt X \to A[/math](по правилу расщепления, т.к. [math]X_S^*[/math] изначально содержит в себе [math]X[/math]) [math]=\gt X \to B [/math], то есть [math]B[/math] входит в замыкание. </br> 2) [math]X_S^+ \subset X_S^* [/math]

Доказательство от обратного: Пусть [math]X_S^+ \not\subset X_S^* =\gt \exists A: A \in X_S^+ \text{ and } A \not\in X_S^*.\; A \in X_S^+ =\gt X \to A =\gt [/math] есть вывод [math] X \to X_1^+, ..., X_n^+ \to A[/math]. В этой цепочке найдём первую свежую ФЗ, то есть она не была в базовых ФЗ [math]X[/math]. Такая фз точно есть в этой цепочке, например, [math]X_n^+ \to A[/math], т.к. [math]A \in X_S^+ \text{ and } A \not\in X_S^* =\gt [/math] такое правило не могло быть в [math]X[/math].
[math]\triangleleft[/math]