Функциональные зависимости: замыкание атрибутов, неприводимые множества функциональных зависимостей, их построение — различия между версиями
Darkey (обсуждение | вклад)  (→Неприводимые множества функциональных зависимостей)  | 
				Darkey (обсуждение | вклад)   (→Построение замыкания атрибутов)  | 
				||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 29: | Строка 29: | ||
  <tex>X_S^* = X</tex>        \\<tex>X_S^*</tex> исходно совпадает с множеством, замыкание атрибутов которого ищем  |   <tex>X_S^* = X</tex>        \\<tex>X_S^*</tex> исходно совпадает с множеством, замыкание атрибутов которого ищем  | ||
  '''do'''  |   '''do'''  | ||
| − |      '''foreach''' <tex>A \  | + |      '''foreach''' <tex>A \to B \in S</tex>:      \\<tex>S</tex> {{---}} множество ФЗ  | 
        '''if''' <tex>A \subset X_S^*</tex> then <tex> X_S^* =  X_S^* \cup B</tex>  |         '''if''' <tex>A \subset X_S^*</tex> then <tex> X_S^* =  X_S^* \cup B</tex>  | ||
  '''while''' есть изменения  |   '''while''' есть изменения  | ||
| Строка 63: | Строка 63: | ||
|proof= Доказательство по построению: <br>  | |proof= Доказательство по построению: <br>  | ||
* По правилу расщепления делаем все части единичными. Понятно, что замыкание множества ФЗ от такой операции не изменится, так как старая ФЗ может быть получена по правилу объединения.    | * По правилу расщепления делаем все части единичными. Понятно, что замыкание множества ФЗ от такой операции не изменится, так как старая ФЗ может быть получена по правилу объединения.    | ||
| − | * Для   | + | * Для каждого правила пытаемся минимизировать по включению левую часть всеми возможными способами. Чтобы проверить, что атрибут X можно удалить из <tex>A \cup \{X\} \to B</tex>, нужно проверить, что если <tex>B \subset A^+_S</tex> выполняется, то <tex>A \to B</tex>, то можно минимизировать левую часть, отбросив <tex>X</tex>. Потенциально из одной ФЗ может получиться множество ФЗ, где левая часть минимальна по включению.  | 
* Пытаемся удалить по одному правилу <tex>A \to B</tex>. Если <tex>B \subset A^+_{S\backslash\{A \to B\}} \to B</tex>, то по теореме <tex>A \to B \in S^+</tex>, значит это правило можно удалить.  | * Пытаемся удалить по одному правилу <tex>A \to B</tex>. Если <tex>B \subset A^+_{S\backslash\{A \to B\}} \to B</tex>, то по теореме <tex>A \to B \in S^+</tex>, значит это правило можно удалить.  | ||
}}  | }}  | ||
Версия 13:25, 21 января 2021
Содержание
Замыкание атрибутов
| Определение: | 
| Замыкание множества атрибутов над множеством ФЗ — максимальное по включению множество атрибутов, обозначаемое , функционально зависящих от . | 
Максимальный размер  равен числу атрибутов в отношении.
Основное свойство замыкания множества атрибутов
| Теорема: | 
| Доказательство: | 
| По определению замыкания атрибутов. | 
Данная теорема позволяет проверять эквивалентность множеств ФЗ без вычисления замыканий ФЗ: 
Даны множества функциональных зависимостей  и , необходимо проверить является ли  эквивалентным , то есть требуется показать, что  и . Теорема выше позволяет проверять принадлежит ли ФЗ некоторому замыканию функциональных зависимостей, тогда чтобы показать, что  достаточно проверить, что  выполняется , то есть для каждой базовой функциональной зависимости  из  построить  замыкание атрибутов над  и проверить, что .
| Утверждение: | 
Следствие: — надключ — множество всех атрибутов  | 
|  
 
 — множество всех атрибутов и по теореме , то по определению функциональной зависимости соответствует ровно один и значит — надключ.  | 
Данное следствие позволяет формально выделять ключи и надключи.
Построение замыкания атрибутов
\\ исходно совпадает с множеством, замыкание атрибутов которого ищем do foreach : \\ — множество ФЗ if then while есть изменения
| Теорема: | 
| Доказательство: | 
| 
 1)    | 
Неприводимые множества функциональных зависимостей
| Определение: | 
Множество ФЗ  неприводимо, если: 
  | 
| Определение: | 
| Множество ФЗ минимально по включению, если ни одна функциональная зависимость из множества не может быть удалена из множества без изменения его замыкания . | 
| Теорема: | 
Для любого множества ФЗ существует эквивалентное неприводимое множество ФЗ (НМФЗ).  | 
| Доказательство: | 
| 
 Доказательство по построению:  
  | 
Оценка времени построения НМФЗ
- Расщепление правых частей - линейно по размеру правых частей.
 - Удаление атрибута . На данном этапе из одной ФЗ возможно получить множество ФЗ минимальных по включению. Синтетическая оценка множества потенциальных множеств минимальных по включению мощностью это . То есть на ФЗ с большой левой частью возможен экспоненциальный рост количества ФЗ с минимальной по включению левой частью. Но на реальных данных большая левая часть в ФЗ практически не встречается.
 - Удаление правила . На этом этапе не добавляем ФЗ, а только удаляем, поэтому сложность этот этап не добавит. Заметим, что каждую ФЗ на этом этапе можно рассматривать лишь один раз, так как все операции по приведению множества к неприводимому сохраняют исходное замыкание ФЗ.
 
Замечания о НМФЗ
- Неприводимые множества ФЗ обычно много меньше множеств исходного множества ФЗ.
 - Неприводимое множество ФЗ может не являться минимальным по мощности.