**Цель:** Овладеть приемами проектирования баз данных с использованием нормализации.  
#### Общие сведения о проектировании баз данных
При проектировании базы данных (БД) решаются две основные проблемы:
- как отобразить объекты предметной области в абстрактные объекты модели данных? (так называемая «проблема логического проектирования баз данных»);
- как обеспечить эффективность выполнения запросов к БД, т.е. каким образом, имея в виду особенности конкретной СУБД, расположить данные во внешней памяти, создание каких дополнительных структур (например, индексов) потребовать и т.д. («Проблема физического проектирования баз данных»)?
  
Для реляционных баз данных (РБД) трудно представить какие-либо общие рецепты по части физического проектирования: здесь много зависит от используемой СУБД. Поэтому рассмотрим вопросы логического проектирования РБД, которые существенны при использовании любой реляционной СУБД.  
Таким образом, проблема проектирования РБД состоит в обоснованном принятии решений о том:
- из каких отношений должна состоять БД;
- какие атрибуты должны быть у этих отношений.
#### Проектирование РБД с использованием нормализации
Процесс проектирования производится методом последовательных приближений к удовлетворительному набору схем отношений. Исходной точкой является представление предметной области в виде одного или нескольких отношений. Процесс проектирования – есть процесс нормализации схем отношений, причем каждая следующая нормальная форма обладает свойствами лучшими, чем предыдущая. **Нормализация** – это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта БД, в котором **каждый факт появляется лишь в одном месте**, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.  
Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений. Примером набора ограничений является ограничение первой нормальной формы — значения всех атрибутов отношения атомарны.  
В теории РБД выделяется следующая последовательность нормальных форм:
- первая нормальная форма (1 НФ);
- вторая нормальная форма (2 НФ);
- третья нормальная форма (3 НФ);
- нормальная форма Бойса-Кодда (НФБК);
- четвертая нормальная форма (4 НФ);
- пятая нормальная форма, или нормальная форма проекции-соединения (5 НФ).
  
Основные свойства нормальных форм:
- каждая следующая нормальная форма в некотором смысле лучше предыдущей;
- при переходе к следующей нормальной форме свойства предыдущих нормальных свойств сохраняются.
  
В основе процесса проектирования лежит метод нормализации, т.е. декомпозиция отношения, находящегося в предыдущей нормальной форме, в два или более отношения, удовлетворяющих требованиям следующей нормальной формы.  
Всякая нормализованная таблица автоматически считается таблицей в **первой нормальной форме**. Таким образом, строго говоря, "нормализованная" и "находящаяся в 1НФ" означают одно и то же. Однако на практике термин "нормализованная" часто используется в более узком смысле – "полностью нормализованная", который означает, что в проекте не нарушаются никакие принципы нормализации.  
Точнее, таблица находится в **первой нормальной форме** тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.  
Таблица находится во **второй нормальной форме**, если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.  
Таблица находится в **третьей нормальной форме**, если она удовлетворяет определению 2НФ и не одно из ее неключевых полей не зависит функционально от любого другого неключевого поля.  
Таблица находится в **нормальной форме Бойса-Кодда**, если и только если любая функциональная зависимость между его полями сводится к полной функциональной зависимости от _возможного_ ключа.  
Таблица находится в **пятой нормальной форме** тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ.  
Как уже говорилось, нормализация – это разбиение таблицы на несколько, обладающих лучшими свойствами при обновлении, включении и удалении данных. Теперь можно дать и другое определение: нормализация – это процесс последовательной замены таблицы ее полными декомпозициями до тех пор, пока все они не будут находиться в пятой нормальной форме. На практике же достаточно привести таблицы к НФБК и с большой гарантией считать, что они находятся в 5НФ. Разумеется, этот факт нуждается в проверке, однако пока не существует эффективного алгоритма такой проверки.