logo
Лекции по информационным технологиям / Лекции_2_семестр

Нормализация таблиц при проектировании базы данных

Процесс определения окончательной структуры БД является циклическим, то есть на разных этапах проектирования – начиная от эскиза структуры БД и заканчивая опытной или даже промышленной эксплуатацией готовой программной системы – приходится возвращаться к структуре БД и вносить в нее изменения;

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

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

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

Процесс нормализацииимеет своей целью устранение избыточности данных и заключается в приведении БД к третьей нормальной форме (ЗНФ).

Существует несколько нормальных форм – 1НФ, 2НФ, ЗНФ, 4НФ, 5НФ, нормальная форма Бойса-Кодда (БКНФ).

При практической разработке баз данных важны первые три – 1НФ, 2 НФ, ЗНФ.

Первая нормальная форма (1НФ)требует, чтобы каждое поле таблицы БД:

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

Повторяющимисяявляются поля, содержащие одинаковые по смыслу значения.

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

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