4.1.4. Вторая и третья нормальные формы. Нормальная форма Бойса- Кодда.

При разработке БД и информационных систем важно не просто обеспечить возможность хранения и обработки определенных данных, а обеспечить максимальную эффективность этого процесса. В рамках реляционной модели удалось создать теорию нормализации, помогающую в решении этой наиважнейшей задачей. Под нормализацией понимают дробление некоторых отношений в БД с целью повышения эффективности хранения данных и их обработки. Каждый новый уровень нормальной формы требует соблюдения некоторых дополнительных условий. Определение отношения в первой нормальной форме дано в 4.1.
Понятие об отношении (таблице) во второй НФ связано с понятием неполной зависимости. Пусть отношение R имеет составной первичный ключ. Говорят, что атрибут A не полностью зависит от первичного ключа, если значение этого атрибута можно однозначно определить по некоторому нетривиальному подмножеству (не включающему все элементы) атрибутов первичного ключа.
Определение. Отношение R называется отношением, заданным во второй нормальной форме (2НФ), если оно является отношением, заданным в первой нормальной форме, и если каждый атрибут в нем полностью зависит от первичного ключа.

Приведем пример. Пусть имеется таблица ПОСТАВКИ с составным первич­ным ключом (Номер поставщика, номер партии товара), а также атрибутами «све­дения о поставщике» и «цена». Здесь атрибут «цена» зависит от всего первичного ключа, а атрибут «сведения о поставщике» только от его части - атрибута «ном ер поставки». Действительно, сведения о поставщике однозначно идентифицируют­ся по его номеру.

Выполним теперь расщепление отношения поставки следующим образом:

 

Например, заменяем

Номер постав­щика

Номер партии товара

Сведения о поставщике

Цена

1

1

ООО ‘Луч’

5000

1

2

ООО ‘Луч’

3000

2

1

ТОО ‘Факел’

4000

2

2

ТОО ‘Факел’

3000

Номер поставщика

Сведения о поставщике

1

ООО ‘Луч’

2

ТОО ‘Факел’

 

 

Номер поставщика

Номер партии товара

Цена

1

1

5000

1

2

3000

2

1

4000

2

2

3000

Как видим для перехода к второй нормальной форме достаточно простого расщепления отношения. При этом в одной из таблиц количество атрибутов в первичном ключе уменьшается.
Сделаем три замечания.
A) Смысл приведения к второй нормальной форме, как видно из примера, состоит в том чтобы избавиться от необходимости дублирования данных (в данном случае сведений о поставщике при занесении информации о каждой новой партии товара), иногда говорят — избавиться от аномалий в БД.
B) Очевидно, что в случае, если первичный ключ отношения является простым, то отношение автоматически задано во второй нормальной форме. В частности, такая ситуация возникает при инфологическом моделировании в ER-модели и использовании правил трансформации из пункта 4.1.2.
C) Из пункта B следует что обеспечить выполнение условий второй нормальной формы можно и без расщепления отношений путем введения искусственного однозначного первичного ключа. Но этот путь на практике не рекомендуется, так как проблема дублирования данных в этом случае сохранится. Более того, в этом случае, как будет показано ниже, будет автоматически нарушено условие третьей нормальной формы.
Вообще говоря, рекомендуется добиваться, чтобы условие второй нормальной формы выполнялось независимо от того, какой из минимальных (по кол-ву атрибутов) неизбыточных ключей выбран в качестве первичного ключа. Это позволит избежать проблем.
Понятие об отношениях в третьей нормальной форме связано с понятием транзитивных зависимостей.
Определение. Говорят, что имеет место транзитивная зависимость атрибута A, если он однозначно зависит от атрибута B, не являющегося ключом или частью первичного ключа (этот неключевой атрибут, естественно, зависит от первичного ключа).
Определение. Отношение R называется отношением, заданным в третьей нормальной форме (3НФ), если оно задано во второй нормальной форме и если в нем отсутствуют транзитивные зависимости атрибутов, не являющихся частью первичного ключа.
Рассмотрим пример. Имеем таблицу РАБОТА_НАД_ПРОЕКТАМИ. Здесь атрибут «ФИО служащего» является первичным ключом, а атрибут «дата окончания» однозначно зависит от атрибута «номер проекта».
 

Выполним расщепление следующим образом

ФИО служаще­го

З/п

Номер проек­та

Дата оконча­ния

Иванов ИИ.

16000

1

30.09.2005

Петров П.П.

15000

1

30.09.2005

Сидоров С.С.

17000

2

31.12.2005

Айдахов А.А.

16000

2

31.12.2005

 

ФИО служащего

З/п

Номер проекта

Иванов И.И.

16000

1

Петров П.П.

15000

1

 

Сидоров С.С.

17000

2

Айдахов А.А.

16000

2

 

Номер проекта

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

1

30.09.2005

2

31.12.2005

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

Таким образом, мы видим, что нарушается условие 3НФ. Добиваемся выполнения условий и приходим к практически тому же расщеплению.

Таким образом, добавление нового искусственного первичного ключа не отменяет расщепления таблицы при дальнейшей нормализации.
Обратим внимание на то, что третья нормальная форма запрещает транзитивные зависимости атрибутов, не входящие в первичный ключ. Однако, транзитивно зависеть могут отдельные компоненты составных первичных ключей.
Пример.
Дано отношение Курсы (номер_группы, ФИО_преподавателя, название кур-
са, дата_начала, дата_окончания).
 

Курсы:                 Первичные ключи «Номер группы», «Название курса»

Номер группы

ФИО препода­вателя

Название кур­са

Дата начала

Дата оконча­ния

101

Иванов ИИ.

Бух. учет

1.04.2005

30.04.2005

102

Иванов И.И.

Бух. учет

1.05.2005

31.05.2005

103

Петров П.П.

Дизайн

1.04.2005

30.04.2005

101

Петров П.П.

Дизайн

1.05.2005

31.05.2005

Предположим, что по названию курса можно однозначно определить ФИО преподавателя (за каждым курсом закреплено по одному преподавателю), в тоже время таблица находится в 3-й нормальной форме.
Определение. Отношение R называется отношением, заданным в третьей нормальной форме Бойса-Кодда (или просто в нормальной форме Бойса-Код- да - НФБК), если оно задано во второй нормальной форме и если в нем отсутствуют транзитивные зависимости любых атрибутов, за исключением возможного простого первичного ключа.
Иногда условие НФБК определяется в терминах детерминантов. Если под детерминантом понимать любой атрибут, по которому можно однозначным образом определить значение некоторого другого атрибута, то условие НФБК можно сформулировать как требование отсутствия в отношении любых детерминантов, не являющихся ключами (или составными частями ключей). В данном примере неключевым детерминантом является атрибут «название_курса».
Выполнения условия легко достичь с помощью расщепления, цель которого удалить транзитивно-зависящий атрибут. При этом атрибут, являющийся причиной этой зависимости, занимает его место в первичном ключе.

 

Пример.
Курсы Ключи «Номер группы», «Название курса»
 

Номер груп­пы

Название

курса

Дата нача­ла

Дата оконча­ния

101

Бух. учет

1.04.2005

30.04.2005

102

Бух. учет

1.05.2005

31.05.2005

103

Дизайн

1.04.2005

30.04.2005

104

Дизайн

1.05.2005

31.05.2005

Преп.- курсы                                             Ключ «Название курса»

Название курса

ФИО преподавателя

Бух. учет

Иванов И.И.

Дизайн

Петров П.П.