Сайт кафедры ИТСайт кафедры ИТ
Направления подготовки
Учебные материалы
О кафедре
На главнуюGitHub
Направления подготовки
Учебные материалы
О кафедре
  • МДК.11.01 - 07 - Нормальная форма Бойса-Кодда (BCNF)

МДК.11.01 - 07 - Нормальная форма Бойса-Кодда (BCNF)

Сегодня мы с Вами подробно рассмотрим нормальную форму Бойса-Кодда (BCNF), в частности Вы узнаете, какие требования предъявляются к таблицам, чтобы база данных находилась в нормальной форме Бойса-Кодда (BCNF), и для наглядности мы как всегда рассмотрим пример.

Между 3 и 4 нормальной формой есть еще и промежуточная нормальная форма, она называется — Нормальная форма Бойса-Кодда (BCNF). Иногда ее еще называют «Усиленная третья нормальная форма». Промежуточной или усиленной третьей нормальной формой ее называют потому, что ситуации, в которых могут предъявляться требования нормальной формы Бойса-Кодда, возникают не всегда, т.е. это некий частный случай, именно поэтому данная форма не включена в основную градацию. Однако во всех источниках эта форма рассматривается, поэтому и мы ее тоже рассмотрим.

Перед тем как переходить к процессу приведения таблиц базы данных до нормальной формы Бойса-Кодда, необходимо, чтобы эти таблицы уже находились в третьей нормальной форме, подробно процесс приведения таблиц базы данных до третьей нормальной формы, а также все требования, предъявляемые к третьей нормальной форме мы рассматривали в предыдущей статье — третья нормальная форма (3NF).

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

Требования нормальной формы Бойса-Кодда

Требования нормальной формы Бойса-Кодда следующие:

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

Отсюда следует, что требования нормальной формы Бойса-Кодда предъявляются только к таблицам, у которых первичный ключ составной. Таблицы, у которых первичный ключ простой, и они находятся в третьей нормальной форме, автоматически находятся и в нормальной форме Бойса-Кодда.

Главное правило нормальной формы Бойса-Кодда (BCNF) звучит следующим образом:

Часть составного первичного ключа не должна зависеть от неключевого столбца.

Пример приведения таблиц базы данных к нормальной форме Бойса-Кодда

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

Допустим, что нам нужно хранить информацию о кураторах всех проектов по каждому направлению.

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

Таблица проектов и кураторов

Инфо

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

🔑 Проект🔑 НаправлениеКуратор
Интернет-магазинРазработкаИванов И.И. (Программист)
Интернет-магазинБухгалтерияСергеев С.С. (Бухгалтер)
Приложение учета кадровРазработкаИванов И.И. (Программист)
Приложение учета кадровБухгалтерияПетров П.П. (Бухгалтер)
Приложение учета кадровРеализацияJohn Smith (Менеджер)
Телеграм-ботРазработкаАндреев А.А. (Программист)

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

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

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

Таблица кураторов

🔑 Идентификатор куратораФИО (Должность)Направление
1Иванов И.И. (Программист)Разработка
2Сергеев С.С. (Бухгалтер)Бухгалтерия
3Петров П.П. (Бухгалтер)Бухгалтерия
4John Smith (Менеджер)Реализация
5Андреев А.А. (Программист)Разработка

Таблица связи кураторов и проектов

🔑 Проект🔑 🔗 Идентификатор куратора
Интернет-магазин1
Интернет-магазин2
Приложение учета кадров1
Приложение учета кадров3
Приложение учета кадров4
Телеграм-бот5

Таким образом, в таблице кураторов у нас хранится список кураторов и их специализация, т.е. направление, которое они могут курировать, а в таблице связи кураторов и проектов отражается связь проектов и кураторов.

После того как мы привели таблицы базы данных к нормальной форме Бойса-Кодда (BCNF), мы можем переходить к приведению таблиц до следующей нормальной формы, в частности до четвертой нормальной формы (4NF). Описание, требования и пример приведения таблиц до четвертой нормальной формы мы рассмотрим в следующем материале.

Последнее обновление: 17.09.2025, 13:47
Предыдущая
МДК.11.01 - 06 - Третья нормальная форма (3NF) базы данных
Следующая
МДК.11.01 - 08 - Четвертая нормальная форма (4NF) базы данных
© Кафедра информационных технологий ЧУВО «ВШП», 2025. Версия: 0.4.1
Материалы доступны в соответствии с лицензией: