Нормализация таблиц
Минимизировать избыточность данных позволяет процесс, называемый нормализацией таблиц. Нормализацию можно было использовать для получения эффективных структур данных, созданных в результате преобразования ER-диаграмм. Но чтобы пояснить этот процесс, будем исходить из описания предметной области ТОРГОВЛЯ.
Реляционная база данных считается эффективной, если все ее таблицы находятся как минимум в 3НФ. Приведение к 3НФ осуществляется, если есть основание для этого.
Определение 1нф
Таблица находится в 1НФ, если все ее поля содержат только простые неделимые значения.
В Таблице ОТДЕЛ все атрибуты имеют неделимые значения. Таким образом, таблица ОТДЕЛ удовлетворяет требованиям 1 НФ.
-
ОТДЕЛ
КОД_ОТД
НАИМ_ОТД
Ф.И.О_ЗАВ_ОТД
ТЕЛ
ОБ_РЕАЛ
В Таблице ПРОДАЖ все атрибуты имеют неделимые значения. Таким образом, таблица ПРОДАЖ удовлетворяет требованиям 1 НФ.
ПРОДАЖ |
АРТ_Т |
ДАТ_ПРОД |
КОЛ_ПРОД_Т |
КОД_ОТД |
НАИМ_Т |
В Таблице ТОВАР все атрибуты имеют неделимые значения. Таким образом, таблица ТОВАР удовлетворяет требованиям 1 НФ.
-
ТОВАР
АРТ_Т
НАИМ_Т
ЕД_ИЗМ
РОЗ_ЦЕН_Т
Определение 2нф
Таблица находится в 2НФ, если она удовлетворяет требованиям 1НФ и неключевые поля функционально полно зависят от первичного ключа.
1) В таблице ОТДЕЛ неключевые поля НАИМ_ОТД, Ф.И.О_ЗАВ_ОТД, ТЕЛ, ОБ_РЕАЛ функционально зависят от ключа КОД_ОТД, что запишем
КОД_ОТД
НАИМ_ОТД, Ф.И.О_ЗАВ_ОТД, ТЕЛ, ОБ_РЕАЛ
-
ОТДЕЛ
КОД_ОТД
НАИМ_ОТД
Ф.И.О_ЗАВ_ОТД
ТЕЛ
ОБ_РЕАЛ
Таким образом, таблица ОТДЕЛ удовлетворяет требованиям 2НФ, так как ее неключевые поля поля НАИМ_ОТД, Ф.И.О_ЗАВ_ОТД, ТЕЛ, ОБ_РЕАЛ функционально полно зависят от первичного ключа
КОД_ОТД НАИМ_ОТД, Ф.И.О_ЗАВ_ОТД, ТЕЛ, ОБ_РЕАЛ
В таблице ПРОДАЖ неключевые поля ДАТ_ПРОД, КОЛ_ПРОД_Т, КОД_ОТД, НАИМ_Т функционально зависят от ключа АРТ_Т, что запишем
АРТ_Т ДАТ_ПРОД, КОЛ_ПРОД_Т, КОД_ОТД, НАИМ_Т
ПРОДАЖ |
АРТ_Т |
ДАТ_ПРОД |
КОЛ_ПРОД_Т |
КОД_ОТД |
НАИМ_Т |
Таким образом, таблица ПРОДАЖ удовлетворяет требованиям 2НФ, так как ее неключевые поля ДАТ_ПРОД, КОЛ_ПРОД_Т, КОД_ОТД, НАИМ_Т функционально полно зависят от первичного ключа
АРТ_Т ДАТ_ПРОД, КОЛ_ПРОД_Т, КОД_ОТД, НАИМ_Т
3) В таблице ТОВАР неключевые поля АРТ_Т, ЕД_ИЗМ, РОЗ_ЦЕН_Т функционально зависят от ключа НАИМ_Т, что запишем
НАИМ_Т АРТ_Т, ЕД_ИЗМ, РОЗ_ЦЕН_Т
-
ТОВАР
АРТ_Т
НАИМ_Т
ЕД_ИЗМ
РОЗ_ЦЕН_Т
Таким образом, таблица ТОВАР удовлетворяет требованиям 2НФ, так как ее неключевые поля АРТ_Т, ЕД_ИЗМ, РОЗ_ЦЕН_Т функционально полно зависят от первичного ключа
НАИМ_Т АРТ_Т, ЕД_ИЗМ, РОЗ_ЦЕН_Т
Определение 3НФ
Таблица находится в 3НФ, если она удовлетворяет требованиям 2НФ и не содержит транзитивных зависимостей.
Транзитивной зависимостью называется функциональная зависимость между неключевыми полями.
В нашем примере не наблюдается транзитивная зависимость.
Полученные таблицы приведены к 3НФ. В них каждая запись есть отдельное независимое утверждение.
Как видим, нормализация приводит к фрагментации исходных таблиц. Осуществив связь этих таблиц посредством связи первичных и внешних ключей, получим реляционную модель данных предметной области БАНКОВСКИЕ ВКЛАДЫ, в которой минимизирована избыточность данных. Эта модель представлена на рисунке.
ОТДЕЛ |
КОД_ОТД |
НАИМ_ОТД |
Ф.И.О_ЗАВ_ОТД |
ТЕЛ |
ОБ_РЕАЛ |
ПРОДАЖ |
АРТ_Т |
ДАТ_ПРОД |
КОЛ_ПРОД_Т |
КОД_ОТД |
НАИМ_Т |
-
ТОВАР
АРТ_Т
НАИМ_Т
ЕД_ИЗМ
РОЗ_ЦЕН_Т
