Рассредоточение информации крупных таблиц
Под нормализацией понимается рассредоточение информации крупных таблиц по нескольким небольшим с целью исключения избыточности данных. Естественно, при этом приходится пересматривать отношения между таблицами, так как появляются новые сущности. Этапы нормализации носят название Форм. Теоретически база данных может принадлежать к одной из пяти так называемых Нормальных форм, естественно, если в ней вообще был начат процесс нормализации. Таким образом, проектирование базы данных — итерационный процесс: одни и те же действия выполняются снова и снова, пока не будут получены удовлетворительные результаты. В то же время полной нормализации базы данных обычно не проводят. Это вызвано тем, что все нормальные формы после третьей вызывают существенное снижение производительности (поскольку разделение таблиц приводит к созданию дополнительных объединений в запросах). К тому же иногда сложно определить направления дальнейшего разделения данных для приведения базы к четвертой и пятой нормальным формам.
Нормальной формой называют набор правил, применяемых к таблице и гарантирующих отсутствие избыточности данных (не только дублирования информации, но и данных, которые могут быть вычислены на основании уже существующих). К примеру, если хранить в базе дату рождения сотрудника, то бессмысленно наряду с этим хранить и его возраст (причем последний столбец придется обновлять каждый год).
Первая нормальная форма избавляет базу от повторяющихся данных. Возьмем за основу таблицу CUSTOMER, представленную в табл. В.1. Начнем с того, что отметим всю информацию, которая характерна для сущности “заказчик”. Это его название, адрес, номера заказов и т. д. Однако заметим: несмотря на то что заказы принадлежат конкретным клиентам, помещение информации о них в таблицу заказчиков приводит к неестественному увеличению объема хранимых данных (в добавок при этом нарушаются принципы реляционности). Полная информация о клиенте помещается в строку каждого заказа, а полная информация об идентичных заказах будет дублироваться для каждого клиента, выполнившего такую покупку.