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