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

Лекции № 8-9.

Функциональная зависимость. Нормальные формы.

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

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

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

Одни и те же данные могут группироваться в таблицы (отношения) различными способами. Группировка атрибутов в отношениях должна быть рациональной (т. е. дублирование данных д.б. минимальным) и упрощающей процедуры их обработки и обновления. Устранение избыточности данных является одной из важнейших задач проектирования баз данных и обеспечивается нормализацией.

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

Вначале вспомним некоторые понятия:

Простой атрибут — это атрибут, значения которого неделимы. Иными словами, в таблице нет полей типа ФИО или Адрес — они разложены на поля Фамилия, Имя, Отчество в первом случае и на поля Индекс, Город и т. д. во втором.

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

Определение функциональной зависимости: Пусть Xи Y атрибуты некоторого отношения. Если в любой момент времени произвольному значению X соответствует единственное значение Y, то Y функционально зависит от X (XY)

Если ключ является составным, то любой атрибут должен зависеть от ключа в целом, но не может находиться в функциональной зависимости от какой-либо части составного ключа, т.е. функциональная зависимость имеет вид (X1, X2, ..., X)Y.

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

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

Полной функциональной зависимостью называется зависимость неключевого атрибута от всего составного ключа, а не от его частей.

Определение транзитивной функциональной зависимости: Пусть X, Y, Z— три атрибута некоторого отношения. При эtom XY и YZ, но обратное соответствие отсутствует, то есть Y не зависит от Z, а Х не зависит от Y. Тогда говорят, что Z транзитивно зависит от Х.

Определение многозначной зависимости: Пусть Х и Y атрибуты некоторого отношения. Атрибут Y многозначно зависит от атрибута X, если. каждому значению X соответствует множество значений Y, не связанных с другими атрибутами из отношения. Многозначные зависимости могут носить характер «один ко многим» (1:М), «многие к одному» (М:1) или «многие ко многим» (М:М), обозначаемые соответственно: X=>Y, Y<=X и X<=>Y. Например, преподаватель ведет несколько предметов, а каждый предмет может вестись несколькими преподавателями, тогда имеет место зависимость ФИО <=> Предмет.

Рассмотрим следующий пример: Предположим, что для учебной части факультета создается БД о преподавателях, которая включает следующие атрибуты:

ФИО - фамилия и инициалы преподавателя (совпадения фамилий и инициалов исключаются).

Должность - должность, занимаемая преподавателем.

Оклад- оклад преподавателя.

Стаж - преподавательский стаж. Д_Стаж - надбавка за стаж.

Кафедра - номер кафедры, на которой числится преподаватель.

Предмет - название предмета (дисциплины), читаемого преподавателем.

Группа - номер группы, в которой преподаватель проводит занятия.

Вид занятия - вид занятий, проводимых преподавателем в учебной группе.

 

Исходное отношение ПРЕПОДАВАТЕЛЬ

ФИО Должность Оклад Стаж Д_Стаж Кафедра Предмет Группа Вид занятия
Иванов И. М. Преподаватель БД АС-21 Практика
Иванов И. М. Преподаватель ОС АС-22 Практика
Петров М. И. Ст. преподаватель БД АС-21 Лекция
Петров М. И. Ст. преподаватель Архитектура АС-21 Практика
Сидоров Н. Г. Преподаватель ОС АС-22 Лекция
Сидоров Н. Г. Преподаватель Архитектура АС-21 Лекция
Егоров В. В. Преподаватель Философия ПС-22 Лекция

Итак, выделим в нашем отношении все виды зависимостей: функциональные (полные и неполные), многозначные, транзитивные. Выявление зависимостей между атрибутами необходимо для приведения данных к нормальным формам, т.е. нормализации данных.

Функциональные зависимости: ФИО→Кафедра, ФИО→Должность, Должность→ Оклад, ФИО→Предмет.

Также в нашем отношении ключ является составным и состоит из атрибутов (ФИО, Предмет, Группа).

Неполная функциональная зависимость: (ФИО, Предмет, Группа)→Должность, т.к. атрибут Должность находится в функциональной зависимости от атрибута ФИО, являющегося частью ключа.

Полная функциональная зависимость: (ФИО, Предмет, Группа)→Вид занятия.

Транзитивная зависимость: ФИО→Должность→Оклад, ФИО→Стаж→Д_Стаж.

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

ФИО →Должность ФИО →Оклад ФИО →Стаж ФИО →Д_Стаж ФИО →Кафедра   Стаж →ДСтаж Оклад →Должность Должность →Оклад (ФИО, Предмет, Группа) →Вид занятий  

К выделению этих функциональных зависимостей приводят следующие соображения.

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

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

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

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

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

Один и тот же преподаватель в одной группе по разным предметам может проводить разные виды занятий. Определение вида занятий, которые проводит преподаватель, невозможно без указания предмета и группы, поэтому имеет место функциональная зависимость (ФИО, Предмет, Группа) →Вид Занятия.

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

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

Каждая следующая нормальная форма ограничивает определенный тип функциональных зависимостей, устраняет соответствующие аномалии при выполнении операций над отношениями БД и сохраняет свойства предшествующих нормальных форм. Выделяют следующую последовательность нормальных форм: первая нормальная форма (1НФ); вторая нормальная форма (2НФ); третья нормальная форма (ЗНФ).