ТОРА (9) - Лекция №2 - Функциональные зависимости: различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
мНет описания правки
Строка 3: Строка 3:
== Функциональные зависимости ==
== Функциональные зависимости ==


Пусть <math>R=(A_1 ... A_n)</math> является функциональной схемой отношения и <math>X</math>, <math>Y</math> - некоторые подмножества атрибутов этой схемы. Говорят, что <math>X</math> функционально определяет <math>Y</math> (<math>X\rightarrow Y</math>), если в любом экземпляре отношения со схемой <math>R</math> не существует двух кортежей, совпадающих по подмножеству <math>X</math> и не совпадающих по подмножеству <math>Y</math>
Пусть {{Формула|f=R=(A_1 ... A_n)}} является функциональной схемой отношения и {{Формула|f=X}}, {{Формула|f=Y}} - некоторые подмножества атрибутов этой схемы. Говорят, что {{Формула|f=X}} функционально определяет {{Формула|f=Y}} ({{Формула|f=X\rightarrow Y}}), если в любом экземпляре отношения со схемой {{Формула|f=R}} не существует двух кортежей, совпадающих по подмножеству {{Формула|f=X}} и не совпадающих по подмножеству {{Формула|f=Y}}


Иначе говоря, если два кортежа совпадают по <math>x</math>, то они должны совпадать и по <math>y</math>
Иначе говоря, если два кортежа совпадают по {{Формула|f=x}}, то они должны совпадать и по {{Формула|f=y}}


Например, <math>R=(A_1, A_2, A_3, A_4)</math>, есть зависимости:
Например, {{Формула|f=R=(A_1, A_2, A_3, A_4)}}, есть зависимости:
* <math>A_1\rightarrow A_2</math> (1)
* {{Формула|f=A_1\rightarrow A_2}} (1)
* <math>A_1A_3\rightarrow A_4</math> (2)
* {{Формула|f=A_1A_3\rightarrow A_4}} (2)


Предположим, что имеет место один экземпляр отношения со схемой <math>R</math>
Предположим, что имеет место один экземпляр отношения со схемой {{Формула|f=R}}


{| class="wikitable"
{| class="wikitable"
  ! !! <math>A_1</math> !! <math>A_2</math> !! <math>A_3</math> !! <math>A_4</math>
  ! !! {{Формула|f=A_1}} !! {{Формула|f=A_2}} !! {{Формула|f=A_3}} !! {{Формула|f=A_4}}
  |- align="center"
  |- align="center"
  | rowspan="3" | <math>R</math> || фирма X || улица Ленина, д.1 || сахар || 40
  | rowspan="3" | {{Формула|f=R}} || фирма X || улица Ленина, д.1 || сахар || 40
  |- align="center"
  |- align="center"
  | фирма X || улица Ленина, д.1 || карамель || 50
  | фирма X || улица Ленина, д.1 || карамель || 50
Строка 27: Строка 27:
== Замыкание множества функциональных зависимостей ==
== Замыкание множества функциональных зависимостей ==


Пусть <math>R</math> - универсальная схема отношения, а <math>F</math> - исходное множество функциональной зависимости на этой схеме. Замыканием <math>F</math> называется всё множество функциональной зависимости, которое логически следует из <math>F</math> - обозначается как <math>F^+</math>
Пусть {{Формула|f=R}} - универсальная схема отношения, а {{Формула|f=F}} - исходное множество функциональной зависимости на этой схеме. Замыканием {{Формула|f=F}} называется всё множество функциональной зависимости, которое логически следует из {{Формула|f=F}} - обозначается как {{Формула|f=F^+}}


Функциональная зависимость логически следует из <math>F</math>, если её можно вывести (получить) с помощью аксиом Армстронга.
Функциональная зависимость логически следует из {{Формула|f=F}}, если её можно вывести (получить) с помощью аксиом Армстронга.


=== Аксиомы Армстронга ===
=== Аксиомы Армстронга ===
Строка 37: Строка 37:
Аксиомы Армстронга являются надёжными и полными.
Аксиомы Армстронга являются надёжными и полными.


'''Надёжность''' - если ФЗ выводится с помощью аксиом Армстронга, то она справедлива во всех экземплярах отношения, где справедливы исходные ФЗ <math>F</math>
'''Надёжность''' - если ФЗ выводится с помощью аксиом Армстронга, то она справедлива во всех экземплярах отношения, где справедливы исходные ФЗ {{Формула|f=F}}


'''Полнота''' - если имеет место какая-либо ФЗ, то она обязательно может быть выведена с помощью аксиом Армстронга.
'''Полнота''' - если имеет место какая-либо ФЗ, то она обязательно может быть выведена с помощью аксиом Армстронга.
Строка 43: Строка 43:
==== Рефлексивность ====
==== Рефлексивность ====


Если <math>Y \subseteq X \subseteq R</math>
Если {{Формула|f=Y \subseteq X \subseteq R}}


то <math>X\rightarrow Y</math>. Тривиальная аксиома.
то {{Формула|f=X\rightarrow Y}}. Тривиальная аксиома.


==== Дополнение ====
==== Дополнение ====


Если <math>X\rightarrow Y</math>,
Если {{Формула|f=X\rightarrow Y}},


<math>Z \subseteq R</math> (<math>Z</math> может быть пустым),
{{Формула|f=Z \subseteq R}} ({{Формула|f=Z}} может быть пустым),


тогда <math>X\bigcup Y\rightarrow Z</math> или <math>XZ\rightarrow YZ</math>
тогда {{Формула|f=X\bigcup Y\rightarrow Z}} или {{Формула|f=XZ\rightarrow YZ}}


==== Транзитивность ====
==== Транзитивность ====


Если <math>X\rightarrow Y</math>
Если {{Формула|f=X\rightarrow Y}}


а <math>Y\rightarrow Z</math>
а {{Формула|f=Y\rightarrow Z}}


то <math>X\rightarrow Z</math>
то {{Формула|f=X\rightarrow Z}}


=== Пример построения множества ФЗ ===
=== Пример построения множества ФЗ ===


Пусть задана УСО (универсальная схема отношения) <math>R=(A, B, C)</math> и зависимости <math>F=(A\rightarrow B, B\rightarrow C)</math>
Пусть задана УСО (универсальная схема отношения) {{Формула|f=R=(A, B, C)}} и зависимости {{Формула|f=F=(A\rightarrow B, B\rightarrow C)}}


# <math>A\rightarrow A</math>, <math>B\rightarrow B</math>, <math>C\rightarrow C</math>, <math>AB\rightarrow A</math>, <math>AB\rightarrow B</math>, <math>AC\rightarrow A</math>, <math>AC\rightarrow C</math>, <math>BC\rightarrow B</math>, <math>BC\rightarrow C</math>, <math>ABC\rightarrow A</math>, <math>ABC\rightarrow C</math>, <math>AB\rightarrow AB</math>, <math>AC\rightarrow AC</math>, <math>BC\rightarrow BC</math>, <math>ABC\rightarrow AB</math>, <math>ABC\rightarrow AC</math>, <math>ABC\rightarrow BC</math>, <math>ABC\rightarrow ABC</math><br><br>
# {{Формула|f=A\rightarrow A}}, {{Формула|f=B\rightarrow B}}, {{Формула|f=C\rightarrow C}}, {{Формула|f=AB\rightarrow A}}, {{Формула|f=AB\rightarrow B}}, {{Формула|f=AC\rightarrow A}}, {{Формула|f=AC\rightarrow C}}, {{Формула|f=BC\rightarrow B}}, {{Формула|f=BC\rightarrow C}}, {{Формула|f=ABC\rightarrow A}}, {{Формула|f=ABC\rightarrow C}}, {{Формула|f=AB\rightarrow AB}}, {{Формула|f=AC\rightarrow AC}}, {{Формула|f=BC\rightarrow BC}}, {{Формула|f=ABC\rightarrow AB}}, {{Формула|f=ABC\rightarrow AC}}, {{Формула|f=ABC\rightarrow BC}}, {{Формула|f=ABC\rightarrow ABC}}<br><br>
# <math>A\rightarrow AB</math> (1ФЗ и пополняем A), <math>AC\rightarrow BC</math>, <math>B\rightarrow BC</math> (2 ФЗ и пополняем B), <math>AB\rightarrow AC</math>, <math>AC\rightarrow ABC</math>, <math>AB\rightarrow ABC</math>, <math>AB\rightarrow BC</math>, <math>A\rightarrow AC</math><br><br>
# {{Формула|f=A\rightarrow AB}} (1ФЗ и пополняем A), {{Формула|f=AC\rightarrow BC}}, {{Формула|f=B\rightarrow BC}} (2 ФЗ и пополняем B), {{Формула|f=AB\rightarrow AC}}, {{Формула|f=AC\rightarrow ABC}}, {{Формула|f=AB\rightarrow ABC}}, {{Формула|f=AB\rightarrow BC}}, {{Формула|f=A\rightarrow AC}}<br><br>
# <math>A\rightarrow C</math> (1 и 2 ФЗ), <math>A\rightarrow ABC</math>
# {{Формула|f=A\rightarrow C}} (1 и 2 ФЗ), {{Формула|f=A\rightarrow ABC}}


Всё, замыкание (<math>F^+</math>) построено. Все перечисленные зависимости образуют замыкание.
Всё, замыкание ({{Формула|f=F^+}}) построено. Все перечисленные зависимости образуют замыкание.


=== Лемма ===
=== Лемма ===
Строка 79: Строка 79:
==== Правило объединения ====
==== Правило объединения ====


Если <math>X\rightarrow Y</math> и <math>X\rightarrow Z</math>, то <math>X\rightarrow YZ</math>
Если {{Формула|f=X\rightarrow Y}} и {{Формула|f=X\rightarrow Z}}, то {{Формула|f=X\rightarrow YZ}}


Доказательство:
Доказательство:
# <math>X\rightarrow XY</math> (1 ФЗ и пополняем X);
# {{Формула|f=X\rightarrow XY}} (1 ФЗ и пополняем X);
# <math>XY\rightarrow YZ</math> (2 ФЗ и пополняем Y);
# {{Формула|f=XY\rightarrow YZ}} (2 ФЗ и пополняем Y);
# <math>X\rightarrow YZ</math> (по аксиоме транзитивности).
# {{Формула|f=X\rightarrow YZ}} (по аксиоме транзитивности).


==== Правило декомпозиции ====
==== Правило декомпозиции ====


Если <math>X\rightarrow Y</math>, а <math>Z \subseteq Y</math>, то <math>X\rightarrow Z</math>
Если {{Формула|f=X\rightarrow Y}}, а {{Формула|f=Z \subseteq Y}}, то {{Формула|f=X\rightarrow Z}}


Доказательство:
Доказательство:
# <math>X\rightarrow Y</math> (по условию);
# {{Формула|f=X\rightarrow Y}} (по условию);
# <math>Y\rightarrow Z</math> (по аксиоме рефлексивности);
# {{Формула|f=Y\rightarrow Z}} (по аксиоме рефлексивности);
# <math>X\rightarrow Z</math> (по аксиоме транзитивности).
# {{Формула|f=X\rightarrow Z}} (по аксиоме транзитивности).


==== Правило псевдотранзитивности ====
==== Правило псевдотранзитивности ====


Если <math>X\rightarrow Y</math> и <math>WY\rightarrow Z</math>, то <math>WX\rightarrow Z</math>
Если {{Формула|f=X\rightarrow Y}} и {{Формула|f=WY\rightarrow Z}}, то {{Формула|f=WX\rightarrow Z}}


Доказательство:
Доказательство:
# <math>WX\rightarrow WY</math> (1 ФЗ и пополняем W);
# {{Формула|f=WX\rightarrow WY}} (1 ФЗ и пополняем W);
# <math>WY\rightarrow Z</math> (по условию);
# {{Формула|f=WY\rightarrow Z}} (по условию);
# <math>WX\rightarrow Z</math> (по аксиоме транзитивности).
# {{Формула|f=WX\rightarrow Z}} (по аксиоме транзитивности).


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


Замыкание <math>F^+</math> может включать в себя очень большое количество ФЗ. Например:
Замыкание {{Формула|f=F^+}} может включать в себя очень большое количество ФЗ. Например:


$F=(X\rightarrow A_1, X\rightarrow A_2 ... X\rightarrow A_n)$
$F=(X\rightarrow A_1, X\rightarrow A_2 ... X\rightarrow A_n)$


<math>X\rightarrow Y \subseteq F^+</math>
{{Формула|f=X\rightarrow Y \subseteq F^+}}


<math>Y \subseteq (A_1, A_2 ... A_n)</math> и таких подмножеств может быть <math>2^n</math>
{{Формула|f=Y \subseteq (A_1, A_2 ... A_n)}} и таких подмножеств может быть {{Формула|f=2^n}}


Поэтому "в лоб" замыкание <math>F^+</math> никто не строит. Но необходимо найти какой-то метод, который достаточно просто позволял бы выяснять, принадлежит ли произвольная ФЗ <math>X\rightarrow Y</math> к <math>F^+</math>
Поэтому "в лоб" замыкание {{Формула|f=F^+}} никто не строит. Но необходимо найти какой-то метод, который достаточно просто позволял бы выяснять, принадлежит ли произвольная ФЗ {{Формула|f=X\rightarrow Y}} к {{Формула|f=F^+}}


Для этого применяется ''замыкание множества атрибутов''. Пусть <math>R</math> - универсальная схема отношения, а <math>X</math> - некоторое подмножество атрибутов. Тогда замыканием множества атрибутов <math>X^+</math> называется совокупность атрибутов <math>A_{i1}, A_{i2} ... A_{ik}</math> таких, что <math>X\rightarrow A_{i1}, X\rightarrow A_{i2} ... X\rightarrow A_{ik}</math>
Для этого применяется ''замыкание множества атрибутов''. Пусть {{Формула|f=R}} - универсальная схема отношения, а {{Формула|f=X}} - некоторое подмножество атрибутов. Тогда замыканием множества атрибутов {{Формула|f=X^+}} называется совокупность атрибутов {{Формула|f=A_{i1}, A_{i2} ... A_{ik} }} таких, что {{Формула|f=X\rightarrow A_{i1}, X\rightarrow A_{i2} ... X\rightarrow A_{ik} }}


=== Алгоритм построения ===
=== Алгоритм построения ===
Строка 122: Строка 122:
Алгоритм является итерационной процедурой.
Алгоритм является итерационной процедурой.


# полагаем <math>i = 0</math> и <math>X_0^+=X</math>, а <math>X_i^+</math> - замыкание множества атрибутов на i-том шаге;
# полагаем {{Формула|f=i = 0}} и {{Формула|f=X_0^+=X}}, а {{Формула|f=X_i^+}} - замыкание множества атрибутов на i-том шаге;
# <math>X _{i+1} ^+ = X _i ^+ \bigcup V</math>, где V - такое множество атрибутов в F, и <math>Y\rightarrow Z</math>, <math>Y \subseteq X _i ^+</math>, <math>V \subseteq Z</math>;
# {{Формула|f=X _{i+1} ^+ = X _i ^+ \bigcup V}}, где V - такое множество атрибутов в F, и {{Формула|f=Y\rightarrow Z}}, {{Формула|f=Y \subseteq X _i ^+}}, {{Формула|f=V \subseteq Z}};
# если <math>X_{i+1}^+ = X_i^+</math>, то <math>X^+ = X_i^+</math>, иначе <math>i = i + 1</math> и возвращаемся в пункт 2.
# если {{Формула|f=X_{i+1}^+ = X_i^+}}, то {{Формула|f=X^+ = X_i^+}}, иначе {{Формула|f=i = i + 1}} и возвращаемся в пункт 2.


==== Пример построения ====
==== Пример построения ====


Пусть <math>R=(A, B, C, D, E, G)</math>
Пусть {{Формула|f=R=(A, B, C, D, E, G)}}


<math>F=(AB\rightarrow C, C\rightarrow A, BC\rightarrow D, ACD\rightarrow B, D\rightarrow EG, BE\rightarrow C, CG\rightarrow BD, CE\rightarrow AG)</math>
{{Формула|f=F=(AB\rightarrow C, C\rightarrow A, BC\rightarrow D, ACD\rightarrow B, D\rightarrow EG, BE\rightarrow C, CG\rightarrow BD, CE\rightarrow AG)}}


<math>X = BD</math>
{{Формула|f=X = BD}}


Надо построить <math>X^+</math>:
Надо построить {{Формула|f=X^+}}:
 
1) {{Формула|f=i = 0}}, {{Формула|f=X _0 ^+ = BD}}
 
2)


# <math>i = 0</math>, <math>X _0 ^+ = BD</math>
#
{| class="wikitable"
{| class="wikitable"
  ! <math>i</math> !! <math>Y\rightarrow Z</math>, для которых <math>Y \subseteq X_i^+</math> !! <math>V\subseteq Z</math> !! <math>X_{i+1}^+ = X_i^+\bigcup V</math>
  ! {{Формула|f=i}} !! {{Формула|f=Y\rightarrow Z}}, для которых {{Формула|f=Y \subseteq X_i^+}} !! {{Формула|f=V\subseteq Z}} !! {{Формула|f=X_{i+1}^+ = X_i^+\bigcup V}}
  |- align="center"
  |- align="center"
  | 0 || <math>D\rightarrow EG</math> || <math>EG</math> || <math>BDEG</math>
  | 0 || {{Формула|f=D\rightarrow EG}} || {{Формула|f=EG}} || {{Формула|f=BDEG}}
  |- align="center"
  |- align="center"
  | 1 || <math>BE\rightarrow C</math> || <math>C</math> || <math>BDEGC</math>
  | 1 || {{Формула|f=BE\rightarrow C}} || {{Формула|f=C}} || {{Формула|f=BDEGC}}
  |- align="center"
  |- align="center"
  | 2 || <math>C\rightarrow A</math><br><math>BC\rightarrow D</math><br><math>CG\rightarrow BD</math><br><math>CE\rightarrow AG</math> || <math>A</math> || <math>BDEGCA</math>
  | 2 || {{Формула|f=C\rightarrow A}}<br>{{Формула|f=BC\rightarrow D}}<br>{{Формула|f=CG\rightarrow BD}}<br>{{Формула|f=CE\rightarrow AG}} || {{Формула|f=A}} || {{Формула|f=BDEGCA}}
  |- align="center"
  |- align="center"
  | 3 || <math>AB\rightarrow C</math><br><math>ACD\rightarrow B</math> || - || <math>BDEGCA</math>
  | 3 || {{Формула|f=AB\rightarrow C}}<br>{{Формула|f=ACD\rightarrow B}} || - || {{Формула|f=BDEGCA}}
  |}
  |}
   
   
Получили, что <math>X_4^+ = X_3^+</math>
Получили, что {{Формула|f=X_4^+ = X_3^+}}


значит <math>X^+ = X_3^+ = BDEGCA</math>
значит {{Формула|f=X^+ = X_3^+ = BDEGCA}}


Это означает, что имеют место следующие ФЗ: $BD\rightarrow B$, <math>BD\rightarrow D</math>, <math>BD\rightarrow E</math>, <math>BD\rightarrow G</math>, <math>BD\rightarrow C</math>, <math>BD\rightarrow A</math>, и все они <math>\subseteq F^+</math>
Это означает, что имеют место следующие ФЗ: $BD\rightarrow B$, {{Формула|f=BD\rightarrow D}}, {{Формула|f=BD\rightarrow E}}, {{Формула|f=BD\rightarrow G}}, {{Формула|f=BD\rightarrow C}}, {{Формула|f=BD\rightarrow A}}, и все они {{Формула|f=\subseteq F^+}}


Короче, чтобы проверить <math>X\rightarrow Y \subseteq F^+</math>, необходимо построить <math>X^+</math>
Короче, чтобы проверить {{Формула|f=X\rightarrow Y \subseteq F^+}}, необходимо построить {{Формула|f=X^+}}


[[Категория:Теоретические основы реляционной алгебры (9 семестр)]]
[[Категория:Теоретические основы реляционной алгебры (9 семестр)]]
[[Категория:Конспекты лекций и семинаров]]
[[Категория:Конспекты лекций и семинаров]]

Версия от 15:03, 22 сентября 2012

Функциональные зависимости, замыкание множества функциональных зависимостей, атрибутов.

Функциональные зависимости

Пусть $$R=(A_1 ... A_n)$$ является функциональной схемой отношения и $$X$$, $$Y$$ - некоторые подмножества атрибутов этой схемы. Говорят, что $$X$$ функционально определяет $$Y$$ ($$X\rightarrow Y$$), если в любом экземпляре отношения со схемой $$R$$ не существует двух кортежей, совпадающих по подмножеству $$X$$ и не совпадающих по подмножеству $$Y$$

Иначе говоря, если два кортежа совпадают по $$x$$, то они должны совпадать и по $$y$$

Например, $$R=(A_1, A_2, A_3, A_4)$$, есть зависимости:

  • $$A_1\rightarrow A_2$$ (1)
  • $$A_1A_3\rightarrow A_4$$ (2)

Предположим, что имеет место один экземпляр отношения со схемой $$R$$

$$A_1$$ $$A_2$$ $$A_3$$ $$A_4$$
$$R$$ фирма X улица Ленина, д.1 сахар 40
фирма X улица Ленина, д.1 карамель 50
фирма X улица Ленина, д.1 пастила 90

Вторая ФЗ (2) имеет место быть, так как нет двух кортежей, совпадающих по этой паре. А первая ФЗ (1) не имеет место быть.

Замыкание множества функциональных зависимостей

Пусть $$R$$ - универсальная схема отношения, а $$F$$ - исходное множество функциональной зависимости на этой схеме. Замыканием $$F$$ называется всё множество функциональной зависимости, которое логически следует из $$F$$ - обозначается как $$F^+$$

Функциональная зависимость логически следует из $$F$$, если её можно вывести (получить) с помощью аксиом Армстронга.

Аксиомы Армстронга

Или правила вывода функциональной зависимости. Существуют различные интерпретации аксиом, но все эквивалентны. Потому приведём только один вариант.

Аксиомы Армстронга являются надёжными и полными.

Надёжность - если ФЗ выводится с помощью аксиом Армстронга, то она справедлива во всех экземплярах отношения, где справедливы исходные ФЗ $$F$$

Полнота - если имеет место какая-либо ФЗ, то она обязательно может быть выведена с помощью аксиом Армстронга.

Рефлексивность

Если $$Y \subseteq X \subseteq R$$

то $$X\rightarrow Y$$. Тривиальная аксиома.

Дополнение

Если $$X\rightarrow Y$$,

$$Z \subseteq R$$ ($$Z$$ может быть пустым),

тогда $$X\bigcup Y\rightarrow Z$$ или $$XZ\rightarrow YZ$$

Транзитивность

Если $$X\rightarrow Y$$

а $$Y\rightarrow Z$$

то $$X\rightarrow Z$$

Пример построения множества ФЗ

Пусть задана УСО (универсальная схема отношения) $$R=(A, B, C)$$ и зависимости $$F=(A\rightarrow B, B\rightarrow C)$$

  1. $$A\rightarrow A$$, $$B\rightarrow B$$, $$C\rightarrow C$$, $$AB\rightarrow A$$, $$AB\rightarrow B$$, $$AC\rightarrow A$$, $$AC\rightarrow C$$, $$BC\rightarrow B$$, $$BC\rightarrow C$$, $$ABC\rightarrow A$$, $$ABC\rightarrow C$$, $$AB\rightarrow AB$$, $$AC\rightarrow AC$$, $$BC\rightarrow BC$$, $$ABC\rightarrow AB$$, $$ABC\rightarrow AC$$, $$ABC\rightarrow BC$$, $$ABC\rightarrow ABC$$

  2. $$A\rightarrow AB$$ (1ФЗ и пополняем A), $$AC\rightarrow BC$$, $$B\rightarrow BC$$ (2 ФЗ и пополняем B), $$AB\rightarrow AC$$, $$AC\rightarrow ABC$$, $$AB\rightarrow ABC$$, $$AB\rightarrow BC$$, $$A\rightarrow AC$$

  3. $$A\rightarrow C$$ (1 и 2 ФЗ), $$A\rightarrow ABC$$

Всё, замыкание ($$F^+$$) построено. Все перечисленные зависимости образуют замыкание.

Лемма

Справедливы следующие правила. Для их доказательства необходимо пополнить ФЗ так, чтобы можно было использовать аксиомы.

Правило объединения

Если $$X\rightarrow Y$$ и $$X\rightarrow Z$$, то $$X\rightarrow YZ$$

Доказательство:

  1. $$X\rightarrow XY$$ (1 ФЗ и пополняем X);
  2. $$XY\rightarrow YZ$$ (2 ФЗ и пополняем Y);
  3. $$X\rightarrow YZ$$ (по аксиоме транзитивности).

Правило декомпозиции

Если $$X\rightarrow Y$$, а $$Z \subseteq Y$$, то $$X\rightarrow Z$$

Доказательство:

  1. $$X\rightarrow Y$$ (по условию);
  2. $$Y\rightarrow Z$$ (по аксиоме рефлексивности);
  3. $$X\rightarrow Z$$ (по аксиоме транзитивности).

Правило псевдотранзитивности

Если $$X\rightarrow Y$$ и $$WY\rightarrow Z$$, то $$WX\rightarrow Z$$

Доказательство:

  1. $$WX\rightarrow WY$$ (1 ФЗ и пополняем W);
  2. $$WY\rightarrow Z$$ (по условию);
  3. $$WX\rightarrow Z$$ (по аксиоме транзитивности).

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

Замыкание $$F^+$$ может включать в себя очень большое количество ФЗ. Например:

$F=(X\rightarrow A_1, X\rightarrow A_2 ... X\rightarrow A_n)$

$$X\rightarrow Y \subseteq F^+$$

$$Y \subseteq (A_1, A_2 ... A_n)$$ и таких подмножеств может быть $$2^n$$

Поэтому "в лоб" замыкание $$F^+$$ никто не строит. Но необходимо найти какой-то метод, который достаточно просто позволял бы выяснять, принадлежит ли произвольная ФЗ $$X\rightarrow Y$$ к $$F^+$$

Для этого применяется замыкание множества атрибутов. Пусть $$R$$ - универсальная схема отношения, а $$X$$ - некоторое подмножество атрибутов. Тогда замыканием множества атрибутов $$X^+$$ называется совокупность атрибутов $$A_{i1}, A_{i2} ... A_{ik}$$ таких, что $$X\rightarrow A_{i1}, X\rightarrow A_{i2} ... X\rightarrow A_{ik}$$

Алгоритм построения

Алгоритм является итерационной процедурой.

  1. полагаем $$i = 0$$ и $$X_0^+=X$$, а $$X_i^+$$ - замыкание множества атрибутов на i-том шаге;
  2. $$X _{i+1} ^+ = X _i ^+ \bigcup V$$, где V - такое множество атрибутов в F, и $$Y\rightarrow Z$$, $$Y \subseteq X _i ^+$$, $$V \subseteq Z$$;
  3. если $$X_{i+1}^+ = X_i^+$$, то $$X^+ = X_i^+$$, иначе $$i = i + 1$$ и возвращаемся в пункт 2.

Пример построения

Пусть $$R=(A, B, C, D, E, G)$$

$$F=(AB\rightarrow C, C\rightarrow A, BC\rightarrow D, ACD\rightarrow B, D\rightarrow EG, BE\rightarrow C, CG\rightarrow BD, CE\rightarrow AG)$$

$$X = BD$$

Надо построить $$X^+$$:

1) $$i = 0$$, $$X _0 ^+ = BD$$

2)

$$i$$ $$Y\rightarrow Z$$, для которых $$Y \subseteq X_i^+$$ $$V\subseteq Z$$ $$X_{i+1}^+ = X_i^+\bigcup V$$
0 $$D\rightarrow EG$$ $$EG$$ $$BDEG$$
1 $$BE\rightarrow C$$ $$C$$ $$BDEGC$$
2 $$C\rightarrow A$$
$$BC\rightarrow D$$
$$CG\rightarrow BD$$
$$CE\rightarrow AG$$
$$A$$ $$BDEGCA$$
3 $$AB\rightarrow C$$
$$ACD\rightarrow B$$
- $$BDEGCA$$

Получили, что $$X_4^+ = X_3^+$$

значит $$X^+ = X_3^+ = BDEGCA$$

Это означает, что имеют место следующие ФЗ: $BD\rightarrow B$, $$BD\rightarrow D$$, $$BD\rightarrow E$$, $$BD\rightarrow G$$, $$BD\rightarrow C$$, $$BD\rightarrow A$$, и все они $$\subseteq F^+$$

Короче, чтобы проверить $$X\rightarrow Y \subseteq F^+$$, необходимо построить $$X^+$$