Выявление зависимостей между атрибутами

Выявление зависимостей между атрибутами необходимо для выполнения проектирования БД методом нормальных форм, рассматриваемого далее.

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

в некотором отношении существует одна или несколько функциональных зависимостей можно вывести другие функциональные зависимости, существующие в этом отношении.

Выявим зависимости между атрибутами отношения ПРЕПОДАВАТЕЛЬ. При этом учтем следующее условие, которое выполняется в дан­ном отношении: один преподаватель в одной группе может проводить один вид заня­тий (лекции или практические занятия).

В результате анализа отношения получаем зависимости между атрибутами, пока­занные на рисунке:

 

К выделению этих ФЗ для рассматриваемого примера приводят следующие со­ображения.

Фамилия, имя и отчество у преподавателей факультета уникальны. Каждому пре­подавателю однозначно соответствует его стаж, т. е. имеет место функциональная за­висимость ФИО->Стаж. Обратное утверждение неверно, так как одинаковый стаж может быть у разных преподавателей.

Каждый преподаватель имеет определенную добавку за стаж, т. е. имеет место фун­кциональная зависимость ФИО->Д_Стаж, но обратная функциональная зависимость отсутствует, так как одну и ту же надбавку могут иметь несколько преподавателей.

Каждый преподаватель имеет определенную должность (преп., ст.преп., доцент, профессор), но одну и ту же должность могут иметь несколько преподавателей, т. е. имеет место функциональная зависимость ФИО—>Должн, а обратная функциональ­ная зависимость отсутствует.

Каждый преподаватель является сотрудником одной и только одной кафедры. По­этому функциональная зависимость ФИО->Каф имеет место. С другой стороны, на каж­дой кафедре много преподавателей, поэтому обратной функциональной зависимости нет.

Каждому преподавателю соответствует конкретный оклад, который одинаков для всех педагогов с одинаковыми должностями, что учитывается зависимостями ФИО->Оклад и Должн->Оклад. Нет одинаковых окладов для разных должностей, поэтому имеет место функциональная зависимость Оклад—>Должн.

Один и тот же преподаватель в одной группе по разным предметам может прово­дить разные виды занятий. Определение вида занятий, которые проводит преподава­тель, невозможно без указания предмета и группы, поэтому имеет место функцио­нальная зависимость ФИО, Предм, Группа->ВидЗан. Действительно, Петров М.И. в 256 группе читает лекции и проводит практические занятия. Но лекции он читает по СУБД, а практику проводит по Паскалю.

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

После того, как выделены все функциональные зависимости, следует проверить их согласованность с данными исходного отношения ПРЕПОДАВАТЕЛЬ. Например, Должн.='преп' и Оклад=500 всегда соответствуют друг другу во всех кортежах, т. е. подтверждается функциональная зависимость Должн<->Оклад. Так же следует верифицировать и остальные функциональные зависимости, не забывая об ограниченности имеющихся в отношении данных.