Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
55
Добавлен:
28.02.2016
Размер:
1.16 Mб
Скачать

Процесс нормализации

Нормализация состоит из трех шагов.

1. Первая нормальная форма (1нф).

Повторение одних и тех же полей нежелательно.

Для того чтобы модель находилась в первой нормальной форме необходимо:

• сделать все поля атомарными;

• исключить повторяющиеся значения атрибутов;

• исключить отношения «многие ко многим».

Код

ФИО

Адрес

1


Код

ФИО

Адрес

Дата1

Сумма1

Дата2

Сумма2

Дата3

Сумма3

Код сотрудника

Дата

Сумма

НЕВЕРНО

ПРАВИЛЬНО

Пример правильно организованной таблицы: значения полей «Дата» и «Сумма» имеет смысл перенести в новую таблицу и связать ее с главной в отношении один-ко-многим.

2. Вторая нормальная форма (2нф).

Каждое поле должно зависеть от единственного первичного ключа.

Для того чтобы модель находилась во второй нормальной форме необходимо:

• выделить ключи и зависящие от них атрибуты;

• выделить связи между ключами и другими атрибутами;

• выписать в отдельную таблицу составной ключ, части ключей и зависящие от них атрибуты.

Клиенты

Заказы

Код

Код

Заказ

Индекс клиента

Имена

Код

НЕВЕРНО

ФИО

Индекс клиента

Клиенты

Заказы

Код

Код

Индекс клиента

Заказ

Имена

ПРАВИЛЬНО

Код

ФИО

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

3. Третья нормальная форма (знф).

Значение поля должно сохраняться неизменным, даже если содержимое других полей изменилось.

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

Транзитивная зависимость — это зависимость, в которой ключевые поля участвуют опосредованно.

Следующий пример иллюстрирует нарушение третьей нормальной формы. Если значение в поле «Код набора» таблицы «Телефоны» изменилось, содержимое поля «Город» также должно измениться. В противном случае, информация в таблице может оказаться неверной. Зависящие друг от друга поля имеет смысл вынести в отдельную таблицу.

1

Телефоны

Дистанция

Код

705

Код набора

048

Код набора

048

Город

Одесса

Телефон

714-77-77

Город

Одесса

Телефоны

Код

705

Код набора

048

Телефон

714-77-77

НЕВЕРНО

ПРАВИЛЬНО

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

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

Из всего множества документов рассмотрим те, которые относятся к отпуску готовой продукции со склада:

1) Заказ

2) Накладная

4) Отчёт по движению готовой продукции на складе

Проанализируем сначала структуру документов. На рисунке выделены группы полей. В одном заказе может быть указано несколько наименований продукции, но только один клиент.

Заказ о поставке продукции

Номер договора

Дата

Название

клиента

Банковские

реквизиты

Код про-дукции

Наимено

вание

Коли-чество

Цена

Сумма

Накладная

Номер накладной

Дата

Номер договора

Код про-дукции

Наименование

продукции

Коли-чество

Цена

Сумма

Отчёт по движению продукции со склада

Номер отчета

Дата отчета

Код продукции

Наименов.

продукции

Дата отгрузки

Ном.

догов.

К-во

Цена

Сум

ма

К-во всего

Сумма

всего

Выделим сущности и связи между ними, избавившись прежде всего от повторяющихся групп. Для большей наглядности приведено более компактное графическое представление. Ключевые атрибуты выделены значком ‘#'.

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

к-во

цена

Заказ о поставке продукции

# Номер договора

Дата

Код клиента

Дата отгрузки

Продукция

# Код продукции

Наименование

Отчет

#Номер отчета

Дата отчета

Клиенты

#Код клиента

Название

Банковские реквизиты

Адрес

1

Рис 5. Выделение сущностей и связей между ними.

В схеме взаимосвязей между сущностями для нашего объекта присутствует одно неспецифическое отношение, которое необходимо разрешить (в овале те поля, которые зависят как от заказа, так и от вида продукции). Добавим сущность «Заказано» с двумя сцепленными ключами. Схема будет иметь следующий вид:

Заказано

#Код продукции

#Номер договора

цена

количество

_______

Клиенты

#Код клиента

Название

Банковские реквизиты

Адрес

1

1

1

Заказ о поставке продукции

# Номер договора

Дата

Код клиента

Продукция

# Код продукции

Наименование

Цена

Отчет

#Номер отчета

Дата отчета

Рис.6. Разрешение неспецифических отношений.

Построенная схема удовлетворяет всем условиям третьей нормальной формы.

Соседние файлы в папке Теория