Нормализация отношений

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

1. быстрый доступ к данным БД;

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

3. целостность данных: при изменении одних объектов автоматически соответствующим образом изменяются связанные с ними объекты.

Теорию нормализации отношений в реляционной модели разработал Кодд. Сначала использовалось 3 нормальные формы, позже были выделены еще две, т.е. разработаны 5 нормальных форм таблиц. Каждая последующая (от 1 до 5) нормальная форма должна удовлетворять требованиям предыдущей и некоторым дополнительным условиям. 4 и 5 формы при практическом проектировании, как, правило, не применяются.

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

Таблица 8.1.

Пример ненормализованной БД

Работник
Код работника ФИО Тип специальности Код здания
Петров И.И. электрик
Петров И.И. электрик
Сидоров В.В. штукатур
Сидоров В.В. штукатур
Сидоров В.В. штукатур
Сидоров В.В. штукатур
Корнеев А.А. электрик

 

Реляционная таблица спроектирована неудачно. В 4-х кортежах, соответствующих рабочему 1412, повторяется одно и то же имя и информация о типе специальности. Эта избыточность данных или повторение приводит не только к потере лишнего места; она может вызвать нарушение целостности данных в БД.

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

Аномалия обновления. Противоречивость данных, вызванная избыточностью и частичным обновлением.

Теперь предположим, что Сидоров в течение 3-х месяцев был на больничном, и все здания, на которые он был назначен работать, уже закончены. Если принимается решение удалить все строки о законченных зданиях из таблицы, то информация о рабочем Сидорове будет потеряна. Это называется аномалией удаления.

Аномалия удаления. Непреднамеренная потеря данных, вызванная удалением других данных.

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

Аномалия ввода. Невозможность ввести данные в таблицу, вызванная отсутствием других данных.

Аномалии ввода, удаления и обновления нежелательны. Чтобы свести к минимуму эти проблемы нужно разделить реляционную таблицу Работник на две таблицы Работник и Назначение. Это решение интуитивное. Воспользуемся нормальными формами или правилами структурирования таблиц.








Дата добавления: 2016-04-02; просмотров: 564;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.