Третья нормальная форма

Третья нормальная форма (3НФ) связана с таким понятием как транзитивная зависимость.  Рассмотрим следующую таблицу

<Автор, Название книги, Издательство>

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

Заметим, что, не смотря на выполнение условий второй нормальной формы, в таблице видна и некоторая избыточность. Действительно, происходит «парное» повторение значения поля (Автор) и поля (Издательство) – автор может иметь несколько книг, и издательство издает далеко не одну книгу. 

Рис. 1.9. Транзитивная зависимость

На Рис. 1.9 показаны зависимости столбца (Издательство).  Действительно данный атрибут, очевидно, зависит от первичного ключа. Но по условию атрибут (Автор) однозначно определяет атрибут  (Издательство), который в свою очередь определяется первичным ключом.

Транзитивная зависимость.

Функциональная зависимость атрибута (A) от атрибута (B) через атрибут (C) называется транзитивной зависимостью.

В нашем примере атрибут (Издательство) транзитивно зависит от первичного ключа (Название книги). Давайте произведем следующую декомпозицию. Заменим исходную таблицу  двумя следующими. Первая таблица  - <Название книги, Автор>.  Первичный ключ таблицы  есть поле (Название книги). Вторая таблица - <Автор, Издательство>. Первичным ключом последней таблицы является поле (Автор). В этих таблицах,  отсутствует транзитивная зависимость. Очевидно, также, что из получившихся таблиц легко получить исходную таблицу.

Дадим теперь следующее определение.

Третья нормальная форма.

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

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

Определение.     

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

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

 

Hosted by uCoz