17.3. Функциональная зависимость

Основу трех нормальных форм образуют функциональные зависимости.

Пусть R – является отношением, а X и Y – произвольными подмножествами множества атрибутов отношения R. Тогда Y функционально зависимо от X, что символически записывается X®Y (X функционально определяет Y), тогда и только тогда, когда для любого допустимого значения отношения R каждое значение X связано в точности с одним значением Y.

Множество атрибутов X называется детерминантом ФЗ, а множество атрибутов Y называется зависимой частью.

Если атрибуты X составляют первичный ключ отношения R, то любой атрибут отношения R функционально зависит от X.

ФЗ – это связь типа многие-ко-одному между двумя множествами атрибутов определенного отношения.

В отношении могут существовать ФЗ, в которые не входят первичные ключи. И поэтому главная цель нормализации – избавить отношения от зависимостей не связанных с первичными ключами.

В 3НФ каждый атрибут сущности зависит только от первичного ключа, от всего первичного ключа и не чего другого, кроме как от первичного ключа, да поможет нам Codd.

ФЗ для SCP: Например, все кортежи отношения SCP с одинаковым значением атрибута S# имеют одинаковое значение атрибута CITY: S – CITY

Интересно, что ФЗ S# – QTY выполняются для таблицы, но не выполняются “всегда”. Иначе, число товаров для каждой поставки данного поставщика одинаково, истинно для Рис., но не верно для всех допустимых значений отношения SCP.

ФЗ не выводятся из внешнего вида отношений. Эти зависимости отражают взаимосвязи обнаруженные между объектами предметной области и являются дополнительными ограничениями, определяемыми предметной областью. То есть ФЗ – семантическое понятие. Она возникает когда по значениям одних данных в предметной области можно определить значения других данных. Например по номеру деканата можно определить его телефон. ФЗ задает дополнительные ограничения на данные, которые могут храниться в отношениях.

ФЗ атрибутов отношения напоминает понятие ФЗ в математике. Но это не одно и то же.

ФЗ (функция) – это тройка объектов (X,Y,f), где X – множество (область определения), Y – множество (множество значений), f – правило, согласно которому каждому элементу xОX ставится в соответствие один и только один элемент y О Y (правило функциональной зависимости). ФЗ обычно обозначается как f:X®Y или y=f(x).

Правило f может быть задано любым способом – в виде формулы, при помощи таблицы значений, при помощи графика, текстовым описанием.

Отличие от математического понятия отношения состоит в том, что если рассматривать математическое понятие функции, то для фиксированного значения x О X соответствующе значение функции e=f(x) всегда одно и то же. Например, если задана функция y=x2, то для значения x=2 соответствующее значение y всегда = 4.

В противоположность этому в отношениях значение зависимого атрибута может принимать различные значения в различных состояниях базы данных.

ФЗ атрибутов утверждает лишь то, что для каждого конкретного состояния БД по значению одного атрибута (детерминанта) можно однозначно определить значение другого атрибута (зависимой части). Но конкретные значения зависимой части могут быть различны в различных состояниях БД.