Выявление зависимостей между атрибутами
Выявление зависимостей между атрибутами необходимо для проектирования БД методом нормальных форм.
Основной способ выявления функциональных зависимостей – внимательный анализ семантики атрибутов. Для каждого отношения существует, но не всегда, определенное множество функциональных зависимостей между атрибутами. Причем если в некотором отношении существует одна или несколько ФЗ, можно вывести другие функциональные зависимости, существующие в этом отношении.
Выявим зависимости между атрибутами отношения ПРЕПОДАВАТЕЛЬ. При этом учтем следующее условие, которое выполняется в данном отношении: один преподаватель в одной группе может проводить один вид занятий.
В результате анализа отношения получаем зависимости между атрибутами, показанными на рис.
ФИО ФИО ФИО ФИО ФИО Стаж Должн Оклад | Оклад Должн Стаж Д_Стаж Каф Д_Стаж Оклад Должн |
ФИО.Предм.Групппа ВидЗан |
К выделению этих ФЗ для рассматриваемого примера приводят следующие соображения.
Фамилия, имя и отчество у преподавателей факультета уникальны. Каждому преподавателю однозначно соответствует стаж, т.е. имеет место функциональная зависимость ФИО→Стаж. обратное утверждение не верно, так одинаковый стаж может быть у разных преподавателей. Каждый преподаватель имеет определенную надбавку за стаж, т.е. имеет место функциональная зависимость ФИО→Д_Стаж, но обратная функциональная зависимость отсутствует, т.к. одну и ту же надбавку могут иметь несколько преподавателей.
Каждый преподаватель имеет определенную должность (преп., ст.преп., доцент, профессор), но одну и ту же должность могут иметь несколько преподавателей, т.е. имеет место функциональная зависимость ФИО→Должн., а обратная функциональная зависимость отсутствует
Каждый преподаватель является сотрудником одной и той же кафедры. Поэтому функциональная зависимость ФИО→Каф. имеет место. С другой стороны, на каждой кафедре много преподавателей, поэтому обратной функциональной зависимости нет.
Каждому преподавателю соответствует конкретный оклад, который одинаков для всех педагогов с одинаковыми должностями, что учитывается зависимостями ФИО→Оклад и Должн→Оклад. Нет одинаковых окладов для разных должностей, поэтому имеет место функциональная зависимость Оклад→Должн.
Один и тот же преподаватель в одной группе по разным предметам может проводить разные виды занятий. Определения вида занятий, которые проводит преподаватель, невозможно без указания предмета и группы, поэтому имеет место функциональная зависимость ФИО, Предм., Группа→ВидЗан.
Мы не выделяем зависимости между атрибутами ФИО, Предм. и Группа, поскольку они образуют составной ключ и не учитываются в процессе нормализации исходного отношения.
После того как выделены все функциональные зависимости, следует проверить их согласованность с данными исходного отношения ПРЕПОДАВАТЕЛЬ.
Например, Должн.=’преп’ и Оклад=500 всегда соответствуют друг другу во всех кортежах, т.е. подтверждается функциональная зависимость Должн↔Оклад. Так же следует проанализировать и остальные функциональные зависимости, не забывая об ограниченности имеющихся в отношении данных.