Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 1 - Проектирование БД.doc
Скачиваний:
61
Добавлен:
12.04.2015
Размер:
448.51 Кб
Скачать

Нормализация

Аномалии модификации

К сожалению, не все таблицы, полученные преобразованием из ER-модели, имеют удачную структуру. Для некоторых таблиц изменение данных может привести к нежелательным последствиям, называемым аномалиями модификации (modification anomalies).

Рассмотрим пример. Сущность ПРИЁМ_ТОВАРА (рис.10,а) в контексте базы данных отражает, когда какой товар получен, и в каком количестве. Соответствующая ей реляционная таблица приведена на рис.10,б. Допустим, что по одному и тому же документу (накладной) на склад могут поступить несколько различных товаров.

Если мы удалим строку, относящуюся к документу 59, то потеряем не только информацию о том, что по этому документу получен шланг, но и то, шланг измеряется в метрах. Это называется аномалией удаления(deletionanomaly) – то есть, удаляя факты, относящиеся к одной сущности (по накладной № 59 получен шланг), мы непроизвольно удаляем факты, относящиеся к другой сущности (единицей измерения шлангов является погонный метр).

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

Третий тип аномалий – аномалия обновления (update anomaly). Допустим, оператор ошибся при вводе, и документ номер 60 нужно было отнести не к 1, а ко 2 ноября 2004г. Чтобы исправить эту ошибку, нужно найти все строки, относящиеся к документу 60, и изменить в них ячейкуДатана '2004-11-02'. Здесь аномалия модификации проявляется в том, что при изменении одного факта (накладная № 60 создана 02.11.2004), мы вынуждены модифицировать несколько строк таблицы.

Рис. 10 (а)

Приём_Товара

Товар

Кол-во

Единица

измерения

Дата

Номер

документа

Гвозди 100

10

кг

2004-10-21

58

Гвозди 120

10

кг

2004-10-21

58

Шланг резиновый D25

150

метр

2004-10-28

59

Доска обрезная 6000х150х30

30

куб.м

2004-11-01

60

Брус 6000х40х40

12

куб.м

2004-11-01

60

(б)

Рис.10. а – ER-диаграмма; б – соответствующее ей отношение.

Аномальная структура таблиц приводит к избыточности хранимой информации. Например, факт, что гвозди измеряются в килограммах, мы вынуждены вводить всякий раз при поступлении гвоздей. Факт, что документ № 58 создан 21.10.2004, продублирован в нескольких строках. Избыточность информации не только "съедает" память, но и делает возможным ввод противоречивых данных. Так, если, добавляя строки, относящиеся к одному документу, ошибиться один раз при вводе даты, то легко получить противоречие: один и тот же документ относится к разным датам.

Аномалии, присутствующие в таблице, можно интуитивно описать следующим образом: проблемы возникают из-за того, что таблица Приём_Товарасодержит факты, относящиеся к различным темам:

  1. в каких единицах измеряет товар;

  2. когда создан документ;

  3. какие товары получены по данному документу.

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

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

Таблицу Приём_Товараможно разбить по числу тем на три таблицы:

Товары(Товар, Единица измерения )

Документы(Номер документа, Дата )

Поступления(Товар,Номер документа, Количество )

Нетрудно проверить, что полученные таблицы лишены аномалий модификации.

Всякий раз, когда мы разбиваем таблицу, мы, возможно, порождаем ограничение ссылочной целостности. ТаблицыТовары,ДокументыиПоступлениясвязаны между собой внешними ключами: столбецТовартаблицыПоступленияссылается наPrimaryKeyТовартаблицыТовары; столбец "Номер документа" ссылается на одноименный столбец таблицыДокументы.

Нормальные формы

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

В 70-х годах XXвека теоретики реляционных баз данных обнаруживали различные типы аномалий модификации, вызванные структурой отношений. Классы отношений, лишенные аномалий определенного типа, называютсянормальными формами (normalforms). Известно семь нормальных форм: первая, вторая, третья, четвертая, пятая нормальные формы (1НФ, 2НФ, 3НФ, 4НФ, 5НФ), нормальная форма Бойса-Кодда (НФБК) и доменно-ключевая нормальная форма (ДКНФ). Нормальные формы являются вложенными друг в друга (рис.11). То есть отношение во второй нормальной форме является отношением в первой нормальной форме, а отношение в 5НФ одновременно находится в 4НФ, НФБК, 3НФ, 2НФ, 1НФ.

Рис.11 – Нормальные формы