
4.2. Нормализация
Нормализация – это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных или процесс последовательной замены таблицы ее полными декомпозициями до тех пор, пока все они не будут находиться в 5НФ.
Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, то есть, исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.
Каждая таблица в реляционной БД удовлетворяет условию, в соответствии с которым в позиции на пересечении каждой строки и столбца таблицы всегда находится единственное атомарное значение, и никогда не может быть множества таких значений. Любая таблица, удовлетворяющая этому условию, называется нормализованной.
Нормальные формы. Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.
Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению 2НФ и не одно из ее неключевых полей не зависит функционально от любого другого неключевого поля.
Выявим все атрибуты и подберем все данные из всей базы данных.
Таблица 8 – Универсальное отношение
Адрес клиента |
Телефон клиента |
Номер заказа |
ФИО клиента |
Код поставщика |
Название фирмы |
адрес фирмы |
Контакт. телефон поставщика |
ФИ партнера |
Код автомобиля |
Марка |
Модель |
Тип кузова |
Год выпуска |
Табельный номер |
Должность |
ФИО сотрудника |
Год рождения |
Паспортные данные |
Код комплектации |
АБС |
АПС |
КПП |
Электрооборудование |
Салон |
Модель |
Мощность двигателя |
Крутящий момент |
Время разгона |
Количество мест |
Расход бензина |
Габаритные размеры |
Масса автомобиля |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 8 представляет собой экземпляр корректного отношения. Его называют универсальным отношением проектируемой базы данных. В одно универсальное отношение включаются все представляющие интерес атрибуты, и оно может содержать все данные, которые предполагается размещать в БД в будущем. Данная таблица находится в первой нормальной форме, так как на пересечении каждой строки и столбца таблицы всегда находится единственное атомарное значение, и никогда не может быть множества таких значений. Но в этой таблице возникают противоречия избыточности, аномалии обновления, аномалии включения, аномалии удаления.
Многие проблемы исчезнут, если выделить в отдельные таблицы сведения о поставщиках, автомобилях, клиентах и сотрудниках.
Запишем структуры таблиц после нормализации.
Таблица 9.1 – «Клиенты»
Код клиента |
ФИО клиента |
Адрес клиента |
Телефон клиента |
|
|
|
|
Таблица 9.2 – «Заказы»
Код клиента |
Номер заказа |
|
|
Таблица 10 – «Автомобили»
Код автомобиля |
Марка |
Модель |
Тип кузова |
Год выпуска |
Код комплектации |
|
|
|
|
|
|
Таблица 11 – «Сотрудники»
Табельный номер |
ФИО сотрудника |
Должность |
Год рождения |
Паспортные данные |
|
|
|
|
|
Таблица 12 – «Поставщики»
Код поставщика |
Название фирмы |
Адрес поставщика |
Контактный телефон |
ФИ партнера |
|
|
|
|
|
Таблица 13 – «Автосалон»
Код поставщика |
Код клиента |
Код автомобиля |
Табельный номер |
|
|
|
|
Таблица 14 – «Комплектация»
Код комплектации |
АБС |
ГУР |
КПП |
Электрооборудование |
Салон |
|
|
|
|
|
|
Таблица 15 – «Технические характеристики»
Модель |
Мощность двигателя |
Крутящий момент |
Время разгона |
Расход бензина |
Габаритные размеры |
Масса автомобиля |
|
|
|
|
|
|
|
Теперь естественным соединением таблиц 9-15, можно образовать исходную таблицу 8. Следовательно, таблицы 9-15 являются полными декомпозициями таблицы 8.