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