5.2.2. Зависимости между полями реляционной таблицы
Классический метод исключения аномалий – уже знакомый нам метод нормальных форм. Этот метод основан на одном из фундаментальных понятий в теории баз данных – понятии зависимости между полями таблиц.
Различают три вида зависимостей:
-
функциональная зависимость,
-
транзитивная зависимость,
-
многозначная зависимость.
Понятие функциональной зависимости является базовым, так как на его основе формулируются определения всех остальных видов зависимостей.
Поле (или группа полей) В функционально зависит от поля (или группы полей) А, если каждому значению А соответствует в точности одно значение В. Математически функциональная зависимость В от А обозначается записью АВ (А определяет В или В функционально зависит от А).
Это означает, что во всех записях с одинаковым значением поля А поле В будет иметь также одно и то же значение. Например, в таблице Преподаватели (рис. 5.4) можно выделить ряд функциональных зависимостей: ФИОКафедра, ФИОДолжность, ФИОРазряд и др.
ФИО |
Должность |
Разряд |
Кафедра |
Дисциплина |
Группа |
Вид занятий |
Былина М.С. |
доцент |
11 |
ЛС |
СУБД |
МТ-81 |
Лекции |
Дюбов А.С. |
ст. преп |
10 |
ЛС |
СУБД |
МТ-81 |
Лабораторные работы |
Былина М.С. |
доцент |
11 |
ЛС |
ФООНС |
МТ-81 |
Лекции |
Сергеев А.Н. |
доцент |
11 |
ЛС |
ФООНС |
МТ-81 |
Лабораторные работы |
Патрик О.Г. |
профессор |
12 |
ЛС |
ФООНС |
М-92в |
Лекции |
Матюхин А.Ю. |
доцент |
11 |
МСП |
МТС |
МТ-92 |
Лекции |
Кожин В.С. |
доцент |
11 |
МСП |
МТС |
МТ-92 |
Курсовой проект |
Рис. 5.4. Таблица ПРЕПОДАВАТЕЛИ
Разновидностями функциональной зависимости являются:
-
функциональная взаимозависимость возникает, когда между полями А и В существует однозначной соответствие. В таблице Преподаватели функциональной взаимозависимостью связаны поля Должность и Разряд.
-
частичной функциональной зависимостью называют зависимость неключевого атрибута от части составного ключа. В таблице Преподаватели первичный ключ состоит из полей ФИО, Дисциплина и Группа. Поле Должность находится в функциональной зависимости от поля ФИО, являющегося частью составного ключа. Значит поле Должность находится в частичной функциональной зависимости от первичного ключа.
-
полной функциональной зависимостью называют зависимость неключевого атрибута от всех полей составного ключа. В таблице Преподаватели поле Вид занятий находится в полной функциональной зависимости от первичного ключа.
Поле С транзитивно зависит от поля А (существует транзитивная зависимость), если для полей А, В, С выполняются условия АВ и ВС, но обратная зависимость отсутствует. В таблице на рис. 5.4 транзитивной зависимостью связаны поля: ФИОДолжностьРазряд.
Поле В многозначно зависит от поля А (существует многозначная зависимость), если каждому значению А соответствует множество значений В, не связанных с другими полями той же таблицы.
В моем примере один преподаватель может преподавать несколько дисциплин, а каждая дисциплина может преподаваться несколькими преподавателями, то есть между полями ФИО и Дисциплина имеется многозначная зависимость.
Два или более полей называются взаимно независимыми, если ни одно из этих полей не является функционально зависимым от других пулей.
Выявление зависимостей между полями в таблице необходимо для применения метода нормальных форм. Зависимости выявляются обычно путем внимательного анализа значений полей.
В теории баз данных сформулированы аксиомы выявления новых функциональных зависимостей из уже выявленных. Пусть A, B и C являются (в общем случае, составными) полями некоторой таблицы R. Множества значений полей A, B и C могут иметь непустое пересечение (для краткости будем обозначать через AB A UNION B):
-
если BA, то AB (рефлексивность);
-
если AB, то ACBC (пополнение);
-
если AB и BC, то AC (транзитивность).
Эта система аксиом является полной и совершенной, то есть любая функциональная зависимость может быть выявлена с помощью этих аксиом и применение этих аксиом не может привести к выводу не существующей зависимости.
По практическим соображениям к этим трем аксиомам добавляют еще 5 аксиом, которые непосредственно следуют из этих трех:
-
AA (самодетерминированность);
-
если ABC, то AB и AC (декомпозиция);
-
если AB и AC, то ABC (объединение);
-
если AB и CD, то ACBD (композиция);
-
если ABC и BD, то ABCD (накопление).