Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационные системы базы данных.DOC
Скачиваний:
38
Добавлен:
02.05.2014
Размер:
839.68 Кб
Скачать

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

В отношении R атрибут типа Y функционально зависит от атрибута типа Х, если каждому значению атрибута X соответствует единственное значение атрибута типа Y.

Синтаксис

X  y (X влечет y).

Пример 1.

В отношении

Двигатель(МаркаДвигателя, Мощность, Масса)

значение атрибута Мощность функционально зависит от значения атрибута МаркаДвигателя.

Кроме того, значение атрибута Масса также функционально зависит от значения атрибута МаркаДвигателя.

При определении функциональных зависимостей используется также термин «детерминант»: в отношении R атрибут или комбинация атрибутов называется детерминантом, если от него функционально зависит какой-либо другой атрибут.

Графически функциональные зависимости представляются диаграммами. На Рис. 0 .21 приведена диаграмма функциональных зависимостей для рассмотренного выше примера в двух вариантах исполнения:

а) с вертикальным размещением атрибутов;

б) с горизонтальным размещением атрибутов.

МаркаДвигателя * МаркаДвигателя Мощность Масса

*

Мощность

Масса

а) б)

Рис. 0.21

На рисунке звездочкой помечен ключ-кандидат, который и принят в качестве ключа, что отображается его подчеркиванием.

Пример 2.

При отсутствии однофамильцев представим отношение Служащий в виде:

(4.1) Служащий(№Служащего, ФИО, ЗПлата, №Проекта, ДатаОкончания),

а1 а2 а3 а4 а5

где аi (i=1,...,5) - символьные имена атрибутов, вводимые для упрощения построения схем отношений и анализа функциональных зависимостей в них.

Выявим в отношении (4.1) функциональные зависимости и определим ключ. С этой целью изобразим функциональные зависимости отношения "Служащий" в виде схемы на рис.4.2. Здесь линии со стрелками определяют зависимости полей-функций аj , находящихся возле концов линий, отмеченных стрелками, от аргументов аi , находящихся возле начал этих линий. Из схемы, например, видно, что атрибут а1 не является функционально зависимым от атрибута а3 . Действительно, одинаковая зарплата может быть у нескольких служащих. Аналогично а1 не зависит от а4.

Рассмотрим возможные ключи отношения, т.е. ключи-кандидаты. Атрибут а4 не может быть ключом-кандидатом, так как от него зависит лишь атрибут а5. Вместе с тем ключами-кандидатами, обычно помечаемыми в схемах символом "звездочка" (*), могут быть а1 и а2 , так

№Служащего*:

а1

*

ФИО*:

а2

*

ЗПлата:

а3

№Проекта:

а4

ДатаОкончания:

а5

Рис. 0.22

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

Пример 3.

Рассмотрим отношение Программисты (с зависимостями между группами атрибутов), в котором неповторимы атрибуты ФИО и НазваниеПрограммы (Назв-еПр-мы):

(4.2) Программисты(№Прогр-та, №Программы, ФИО, Назв-еПр-мы, Ресурсы),

а1 a 2 а 3 а 4 а5

где под ресурсами понимаются средства на разработку, которые зависят от программы и от программиста; аi (i=1,...,5) - символьные имена атрибутов.

Схема отношения Программисты с обозначенными функциональными зависимостями приведена на Рис. 0 .23. Здесь линиями с промежуточными черточками обозначены функциональные зависимости от совокупностей атрибутов.

Из рассмотрения функциональных зависимостей видно, что в отношении нет простого ключа. Однако имеется четыре составных (или сцепленных) ключа-кандидата, состоящих из пар атрибутов (а1, а2), (а1, а4), (а2, а3), или (а3, а4), которые помечены звездочками. Так, атрибут а5 функционально зависит от любого из приведенных возможных составных ключей. По соображениям удобства для пользователей ключом принята пара атрибутов (а1, а2), т.е. (№Прогр-та, №Пр-мы), которые в формуле (4.2) и на рисуке подчеркнуты.

а1

*

а2

*

а3

*

а4

*

а5

Рис. 0.23