Основные проблемы проектирования
1. Избыточное дублирование данных
Следует различать простое (неизбыточное) и избыточное дублирование данных. Наличие первого из них допускается в базах данных, а избыточное дублирование данных может приводить к проблемам при обработке данных.
Пример неизбыточного дублирования данных представлен в приведенной на рис. 5.1 таблице с полями Сотрудник и Телефон. Для сотрудников, находящихся в одном помещении, номера телефонов совпадают.
Сотрудник | Телефон |
Иванов | |
Петров | |
Сидоров | |
Егоров |
Рис. 5.1. Неизбыточное дублирование данных
Номер телефона 4328 встречается несколько раз, хотя для каждого служащего номер телефона уникален. Поэтому ни один из номеров не является избыточным. Действительно, при удалении одного из номеров телефонов будет утеряна информация о том, по какому номеру можно дозвониться до одного из служащих.
Сотрудник | Телефон | Номер_комнаты |
Иванов | ||
Петров | ||
Сидоров | ||
Егоров |
Рис. 5.2. Избыточное дублирование данных
Пример избыточного дублирования (избыточности) представлен в таблице на рис. 5.2. Эта таблица, в отличие от таблицы на рис. 5.1, дополнена полем Номер_комнаты. Естественно предположить, что все сотрудники в одной комнате имеют один и тот же телефон. Сидоров и Егоров находятся в той же комнате, что и Петров, то есть для них номера комнат можно узнать из записи со сведениями о Петрове. Следовательно, в данной таблице имеется избыточное дублирование данных.
Возможный способ выхода из данной ситуации приведен на рис. 5.3. Здесь показаны две таблицы, полученные путем декомпозиции таблицы на рис. 5.2. Первая таблица содержит информацию о номерах комнат, в которых располагаются сотрудники, а вторая - информацию о номерах телефонов в каждой из комнат.
Телефон | Номер_комнаты | Сотрудник | Номер_комнаты | |
Иванов | ||||
Петров | ||||
Сидоров | ||||
Егоров |
Рис. 5.3. Исключение избыточного дублирования данных
Процедура декомпозиции одной таблицы на две является основной процедурой нормализации таблиц.
Избыточное дублирование данных создает проблемы при обработке записей таблиц. Проблемы или аномалии могут возникать при редактировании, удалении и добавлении записей.
2. Аномалии модификации, удаления и добавления
Аномалией называют такую ситуацию в таблицах базы данных, которая приводит к противоречиям в данных или существенно усложняет обработку данных.
Выделяют три основных вида аномалий: аномалии модификации (или редактирования), аномалии удаления и аномалии добавления.
Аномалии модификации проявляются в том, что изменение значения одного данного может повлечь за собой просмотр всей таблицы и соответствующее изменение некоторых других записей таблицы.
Например, изменение номера телефона в комнате 111 (рис. 5.2), представляющее собой один факт, потребует просмотра всей таблицы и изменения поля Телефон в записях, относящихся к Петрову, Сидорову и Егорову.
Аномалии удаления состоят в том, что при удалении какой-либо записи из таблицы может пропасть и другая информация, которая не связана напрямую с удаляемым данным.
В той же таблице на рис. 5.2 удаление записи о сотруднике Иванове приводит к исчезновению информации о номере телефона, установленного в 109-й комнате.
Аномалии добавления возникают в случаях, когда информацию в таблицу нельзя поместить до тех пор, пока она неполная, либо вставка новой записи требует дополнительного просмотра таблицы.
Примером такой аномалии может служить ситуация добавления в таблицу на рис. 5.2 информации о новом сотруднике. Для исключения противоречий придется сверить номер телефона с номерами телефонов других сотрудников, сидящих в той же комнате.
Другой пример: в такой структуре хранение информации о комнате и установленном в ней телефоне будет нелогичным, если в эту комнату не помещены сотрудники. Более того, если поле Сотрудник – ключевое, такую запись невозможно поместить в базу данных, так как ключевое поле не может быть оставлено пустым.