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

Пусть A – некоторый атрибут, т.е. какое-либо свойство или связь, как-либо характеризующее(ая) отображаемую в модели данных реальность или часть (сущность, объект, элемент, фрагмент, закономерность, etc.) ее и обладающее(ая) определенной устойчивостью в процессе работы с моделью, в том числе, и при ее модификациях. Таким атрибутом может быть, например, фамилия сотрудника в базе данных отдела кадров, количество единиц какого-либо проданного товара в базе данных торговой организации, родственные отношения членов семьи в базе данных агенства недвижимости и др.

Каждый атрибут, описываемый в модели, как правило имеет определенное множество значений, которое он может принимать (это множество называют доменом, см. ниже). Если это множество бесконечно, то его приходится как-либо ограничить, чтобы в базе данных можно было записать конкретное значение атрибута, характеризующее объект, обладающий этим атрибутом.

Собственно в базе данных хранятся конкретные комбинации значений различых сочетаний (таблиц) атрибутов, характеризующие те или иные объекты описываемой модели реальности.

С точки зрения математики множество записанных сочетаний значений атрибутов и есть отношение.
Однако при рассуждениях о текущем состоянии базы данных, которое, строго говоря, и есть отношение, применяют термин состояние отношения, как бы подчеркивая некоторый временный характер этого состояния.
И напротив, рассуждая об общем составе базы данных, используют термин схема отношения, акцентируя внимание на относительном постоянстве модели, положеной в основу базы.
Если принять эти рассуждения, то можно перейти и к более формальным описаниям.

Пусть R(A1, A2, ..., An) – отношение, определенное на множестве атрибутов AR, т.е. Ai AR.

В данном разделе множество атрибутов AR будет единственной составляющей такого понятия, как схема R отношения R. Иначе говоря, R = {AR}. Впоследствии, это понятие будет уточнено.

Более того, чтобы избежать громоздкого обозначения схемы отношения, в тех случаях, когда надо просто указать атрибуты, на которых определено отношение R со схемой R, будет использоваться выражение R(A1, A2, ..., An), которое формально обозначает собой R = {{A1, A2, ..., An}}.

Однако в некоторых случаях при упоминании атрибутов в тексте, особенно если для них используются русскоязычные обозначения, для выделения их из текста удобно использовать другой шрифт. Поэтому в таких случаях атрибуты будут записываться курсивом, например, Студент, Город и т.д.

Такие записи имеет также смысл сопоставить именам атрибутов, которые в свете упомянутого выше различия "смысла и денотата" можно отличать при необходимости от самих атрибутов. В действительности, кроме рассматриваемой пары Атрибут/Имя атрибута существует много примеров таких пар, ближайшими из которых в программировании являются Величина/Обозначение величины, Переменная/Значение переменной, Переменная/Адрес переменной. Причем ролевые оттенки вторых составляющих в случае первого и третьего примера схожи, а в случае второго и третьего - существенно различны.

Тогда при необходимости формально обозначить имя атрибута будет также использоваться курсивный шрифт, т.е. Ai означает имя атрибута Ai, а AR множество имен атрибутов из их множества AR.

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

Очевидно также, что, если потребуется использовать имя схемы R отношения R, то оно будет в точности таким же, как и имя отношения R, т.е. R.

С математической точки зрения отношение может быть бесконечным множеством, однако в реляционных моделях его предполагают конечным и на практике отождествляют с понятием двухмерной таблицы.

При представлении отношения с помощью таблицы ее строки соответствуют кортежам, а столбцы – атрибутам. Причем такая таблица должна обладать следующими свойствами:
1. В таблице нет одинаковых строк.
2. Каждый столбец таблицы содержит значения только одного атрибута.
3. Порядок строк и столбцов в таблице не существенен.

Каждый атрибут Aj, входящий в отношение, имеет область допустимых значений D(Aj), которую принято называть доменом. Так, например, какая-то сущность в предметной области может обладать свойством “пол”, для которого известно множество его значений: {мужской, женский}.

Будем говорить, что атрибуты A и B отношения R связаны функциональной зависимостью (ФЗ) f:


f: D(A) D(B),

которую будем понимать как множество упорядоченных пар:

{<a, b> | a D(A), b D(B)},

где – символ, обозначающий элемент множества, " | " – сокращенная запись словосочетания "таких что", если в любой момент времени (время понадобится впоследствии) каждому элементу a D(A) соответствует не более одного элемента b D(B)
.
f представляет собой имя функциональной зависимости, а стрелка разделяет ФЗ на левую и правую части. При этом левую часть ФЗ, иногда называют детерминантой.

Функциональная зависимость это не функция в точном математическом смысле, так как допускается, что со временем она может изменяться (так же как изменяется и отношение R).

Функциональная зависимость атрибута B от атрибута A состоит в том, что каждому значению свойства, описываемого атрибутом A, может быть поставлено в соответствие только одно значение свойства, описываемого атрибутом B.

Функциональная зависимость может связывать и совокупность атрибутов:


f: {A1, ..., An} {B1, ..., Bm},
что является сокращенной записью для:

f: D(A1) decart_product... decart_product D(An) fnc_depend D(В1) decart_product... decart_product Dm),

где decart_product – математический символ операции декартова произведения.

[ Назад  Начало раздела  Далее  Содержание]