Функциональная зависимость
Реляционная БД содержит семантическую и структурную информацию. Структурой БД определяет число и вид включенных в нее отношений и связи типа «один-ко-многим», которые существуют между кортежами этих отношений. Семантической частью описывается множество функциональных зависимостей, которые существуют между атрибутами этих отношений.
Если имеются два атрибута А и В какого-либо отношения, то говорят, что В функционально зависит от А, если в каждый момент времени каждому значению А соответствует лишь одно значение В.
Функциональную зависимость (ФЗ) обозначают $А \to В$. Обратим внимание, что А и В могут быть не только единичными атрибутами, но и группами, которые составлены из нескольких атрибутов одного отношения.
Говорят, что функциональные зависимости являются связями типа «один-ко-многим», которые существуют внутри отношения.
С помощью функциональных зависимостей можно накладывать на реляционную схему дополнительные ограничения. Основной идеей является то, что значением одного атрибута в кортеже однозначно определяется значение другого атрибута.
К примеру, в каждом кортеже на рисунке 1 Фамилия однозначно определяется № работника; Специальность однозначно определяется № работника. Данные функциональные зависимости записывают в виде:
ФЗ: № работника $\to$ фамилия, ФЗ: № работника $\to$ специальность.
Функциональная зависимость значением одного атрибута в кортеже однозначно определяет значение другого атрибута в кортеже.
Другими словами функциональная зависимость определяется следующим образом:
Если в таблице R существуют атрибуты А и В, то запись
ФЗ : $A \to В$
значит, что при одном и том же значении атрибута А двух кортежей в таблице R они будут иметь одно и то же значение атрибута В.
Знак $\to$ читают «функционально определяет».
Данное определение можно применить также в случае, когда А и В являются множеством столбцов, а не просто отдельными столбцами.
Детерминантом называют атрибут в левой части функциональной зависимости, т.к. его значением однозначно определяется значение атрибута в правой части.
Детерминантом всегда является ключ таблицы, т.к. его значением однозначно определяется значение каждого атрибута таблицы.
Типы функциональных зависимостей
Не все функциональные зависимости являются желательными.
Избыточной функциональной зависимостью называют зависимость, которая заключает в себе такую информацию, которую можно получить на основе других зависимостей, содержащихся в базе данных.
Схема базы данных без избыточных функциональных зависимостей считается корректной. В обратном случае необходимо прибегнуть к процедуре разложения (декомпозиции) существующего множества отношений. При этом множество, которое создается, будет содержать большее количество отношений, являющиеся проекциями отношений исходного множества.
Процесс замены этой совокупности отношений другой схемой с устраненными избыточными функциональными зависимостями называют нормализацией.
Существует еще несколько видов функциональной зависимости.
Транзитивная функциональная зависимость. Пусть А, В, С – атрибуты какого-либо отношения. При этом $А \to В$ и $В \to С$ и отсутствует обратное соответствие, то есть $С \not \to В$ и $В \not \to А$. В таком случае С транзитивно зависит от А.
Многозначная зависимость. Пусть А, В, С – атрибуты некоторого отношения R. В данном отношении R существует многозначная зависимость $R.А \to R.В$ лишь в том случае, когда множество значений В, которое соответствует паре значений А и С, зависит только от А и не зависит от С.