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

МДК.11.01 - 06 - Третья нормальная форма (3NF) базы данных

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

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

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

Требования третьей нормальной формы (3NF)

Требование третьей нормальной формы (3NF) заключается в том, чтобы в таблицах отсутствовала транзитивная зависимость.

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

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

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

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

Главное правило третьей нормальной форме (3NF) звучит следующим образом:

Таблица должна содержать правильные неключевые столбцы

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

Для рассмотрения примера давайте возьмем нашу таблицу с сотрудниками, которую в предыдущем материале мы привели ко второй нормальной форме путем добавления в нее дополнительного атрибута «Табельный номер», который в результате стал первичным ключом.

Таблица сотрудников во второй нормальной форме

🔑 Табельный номерФИОДолжностьПодразделениеОписание подразделения
1Иванов И.И.ПрограммистОтдел разработкиРазработка и сопровождение приложений и сайтов
2Сергеев С.С.БухгалтерБухгалтерияВедение бухгалтерского и налогового учета финансово-хозяйственной деятельности
3John SmithПродавецОтдел реализацииОрганизация сбыта продукции

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

Однако, в результате проверки мы выясняем, что столбец «Описание подразделения» не зависит напрямую от первичного ключа. Мы это выяснили, когда задали себе один вопрос «Каким образом описание подразделения связано с сотрудником?». И наш ответ звучит следующим образом: «Атрибут описание подразделения содержит детальные сведения того подразделения, в котором работает сотрудник».

Отсюда следует, что столбец «Описание подразделения» не связан на прямую с сотрудником, он связан напрямую со столбцом «Подразделение», который напрямую связан с сотрудником, ведь сотрудник работает в каком-то конкретном подразделении. Это и есть транзитивная зависимость, когда один неключевой столбец связан с первичным ключом через другой неключевой столбец.

Чтобы привести эту таблицу к третьей нормальной форме, мы должны сделать что? Правильно, декомпозицию!

Мы должны эту таблицу разбить на две: в первой хранить сотрудников, а во второй подразделения. А для реализации связи в таблице сотрудников создать ссылку на таблицу подразделений, т.е. добавить внешний ключ.

Таблица сотрудников в третьей нормальной форме

🔑 Табельный номерФИОДолжность🔗 Подразделение
1Иванов И.И.Программист1
2Сергеев С.С.Бухгалтер2
3John SmithПродавец3

Таблица подразделений в третьей нормальной форме

🔑 Идентификатор подразделенияПодразделениеОписание подразделения
1Отдел разработкиРазработка и сопровождение приложений и сайтов
2БухгалтерияВедение бухгалтерского и налогового учета финансово-хозяйственной деятельности
3Отдел реализацииОрганизация сбыта продукции

Таким образом, в наших таблицах отсутствует транзитивная зависимость, и они находятся в третьей нормальной форме.

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

Последнее обновление: 11.09.2025, 10:03
Предыдущая
МДК.11.01 - 05 - Вторая нормальная форма (2NF) базы данных
Следующая
МДК.11.01 - 07 - Нормальная форма Бойса-Кодда (BCNF)
© Кафедра информационных технологий ЧУВО «ВШП», 2025. Версия: 0.4.1
Материалы доступны в соответствии с лицензией: