Нормализация отношения
- процесс приведения реляционных таблиц к стандартному виду.
Рассмотрим реляционную таблицу на рис. 3.1. После небольшого анализа видно, что реляционная таблица на рис. 3.1 спроектирована неудачно. Например, в четырех кортежах, соответствующих рабочему 1412, повторяется одно и то же имя и информация о типе специальности. Эта избыточность данных или повторение приводит не только к потере лишнего места; она может вызвать нарушение целостности данных (противоречивость) в базе данных.
Избыточность данных - повторение данных в базе данных.
Целостность данных - согласованность данных в базе данных.
Таблица 3.1. «Работник»
№ работника |
Фамилия |
Специальность |
№ менеджера |
№ здания |
1235 |
Петров |
Электрик |
1311 |
312 |
1235 |
Петров |
Электрик |
1311 |
515 |
1412 |
Смирнов |
Штукатур |
312 |
|
1412 |
Смирнов |
Штукатур |
460 |
|
1412 |
Смирнов |
Штукатур |
435 |
|
1412 |
Смирнов |
Штукатур |
515 |
|
1311 |
Васильев |
Электрик |
435 |
Проблема возникает из-за того, что один и тот же работник может работать более, чем на одном здании. Предположим, что специальность Смирнова была указана неправильно, а исправление было внесено только в первый кортеж. Тогда между кортежами, содержащими информацию о Смирнове, возникает несоответствие, которое называется аномалией обновления.
Аномалия обновления - противоречивость данных, вызванная их избыточностью и частичным обновлением.
Теперь предположим, что Смирнов в течение трех месяцев был на больничном и все здания, на которых он был назначен работать, уже закончены. Если принимается решение удалить все строки о законченных зданиях из таблицы, то информация о Смирнове, его специальности будет потеряна. Это называется аномалией удаления. Обратный случай: мы могли нанять нового работника по фамилии Сидоров, которого еще не успели назначить ни на какое здание. Если мы не допускаем пустых значений, то не можем ввести информацию о Сидорове в базу данных. Это называется аномалией ввода.
Аномалия удаления - непреднамеренная потеря данных, вызванная удалением других данных.
Аномалия ввода - невозможность ввести данные в таблицу, вызванная отсутствием других данных.
Аномалии обновления, удаления и ввода, очевидно, нежелательны. Чтобы предотвратить или хотя бы свести к минимуму подобные проблемы нужно воспользоваться нормальными формами или правилами структурирования таблиц.