Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
доп.docx
Скачиваний:
37
Добавлен:
26.03.2016
Размер:
115.88 Кб
Скачать

2.7 Нормализация данных.

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

Рациональная нормализация часто улучшает производительность. Ниже приведены некоторые из преимуществ нормализации:

- более быстрая сортировка и создание индексов;

- большее количество кластеризованных индексов;

- более узкие и компактные индексы;

- меньшее количество индексов в таблице. Это улучшает производительность инструкций INSERT, UPDATE и DELETE;

- меньшее количество значений NULL и более низкая вероятность несогласованности. Это повышает компактность базы данных.

2.7.1 Функциональные зависимости.

Функциональная зависимость определяет отношение между полем (или группой полей) одной таблицы и полем (или группой полей) другой таблицы. Поэтому нужно выяснить, что от чего зависит. Например, фамилия человека зависит от самого человека. У каждого человека есть фамилия - не обязательно уникальная, но только одна. С другой стороны, личность человека не зависит - от фамилии, поскольку существуют десятки и сотни однофамильцев. Другими словами, фамилия является свойством человека (личности), но не наоборот - человек не является свойством объекта фамилия. Можно легко найти другие понятия, являющиеся свойствами личности (зависящие от личности). Например: адрес, дата рождения, почтовый индекс и т.д. Т.е. следует сгруппировать поля по принадлежности к объектам абстрактным или реальным.

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

- Правило первое: не должно быть повторяющихся полей и составных значений;

- Правило второе: каждое не ключевое поле должно однозначно определяться первичным ключом таблицы;

- Правило третье: ни одно из не ключевых полей не должно однозначно определяться частью первичного ключа таблицы.

2.7.2 Первая нормальная форма таблицы.

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

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

Код заказа

Дата заказа

Код продукта 1

Код продукта 2

Код продукта 3

Сумма

11

08/04/99

ПР1

ПР2

ПР3

59.34

При такой структуре таблицы все было в порядке до тех пор, пока клиент не заказывал больше трёх видов товара за один раз. Конечно же, можно увеличить число одновременно заказываемых товаров. Но до какого значения? Пять, десять, двадцать? Можно сделать и двадцать, но, если основная масса клиентов будет заказывать по два-три товара, девять десятых файла таблицы будут напрасно занимать место на диске, а на обработку пустых полей опять-таки будет уходить ценное время.

Первая нормальная форма заменяет повторяющиеся поля одним полем, создавая при этом несколько записей (по одной на каждый вид товара).

Код заказа

Дата заказа

Код товара

Сумма заказа

11

08/04/99

ПР1

60.00

11

08/04/99

ПР2

60.00

11

08/04/99

ПР3

60.00

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