Избыточное дублирование данных и аномалии

Следует различать простое (неизбыточное) и избыточное дублирование данных. Наличие первого из них допускается в базах данных, а избыточное дублирование данных может приводить к проблемам при обработке данных. Приведем примеры обоих вариантов дублирования.

Пример неизбыточного дублирования данных представляет приведенное на рис. 5.1 отношение С_Т с атрибутами Сотрудник и Телефон. Для сотрудников, находящихся в одном помещении, номера телефонов совпадают. Номер теле­фона 4328 встречается несколько раз, хотя для каждого служащего номер теле­фона уникален. Поэтому ни один из номеров не является избыточным. Дей­ствительно, при удалении одного из номеров телефонов будет утеряна инфор­мация о том, по какому номеру можно дозвониться до одного из служащих.

С Т

 

Сотрудник

Телефон

Иванов И.М.

3721

Петров М.И.

4328

Сидоров Н.Г

4328

Егоров В.В.

4328

Рис. 5.1. Неизбыточное дублирование

Пример избыточного дублирования (избыточности) представляет приведен­ное на рис. 5.2а отношение С_Т_Н, которое, в отличие от отношения С_Т, допол­нено атрибутом Нкомн (номер комнаты сотрудника). Естественно предполо­жить, что все служащие в одной комнате имеют один и тот же телефон. Следова­тельно, в рассматриваемом отношении имеется избыточное дублирование дан­ных. Так, в связи с тем, что Сидоров и Егоров находятся в той же комнате, что и Петров, их номера можно узнать из кортежа со сведениями о Петрове.

На рис. 5.26 приведен пример неудачного отношения С_Т_Н, в котором вместо телефонов Сидорова и Егорова поставлены прочерки (неопределен­ные значения). Неудачность подобного способа исключения избыточности заключается в следующем. Во-первых, при программировании придется по­тратить дополнительные усилия на создание механизма поиска информации


 


а)


СТ Н

 

Сотрудник

Телефон

Нкомн

Иванов И.М.

3721

109

Петров М.И.

4328

111

Сидоров Н.Г.

4328

111

Егоров В.В.

4328

111


б)


с т н

 

Сотрудник

Телефон

Нкомн

Иванов И.М.

3721

109

Петров М.И.

4328

111

Сидоров Н.Г.

111

Егоров В.В.

111


Рис. 5.2. Избыточное дублирование

для прочерков таблицы. Во-вторых, память все равно выделяется под атри­буты с прочерками, хотя дублирование данных и исключено. В-третьих, что особенно важно, при исключении из коллектива Петрова кортеж со сведени­ями о нем будет исключен из отношения, а значит, уничтожена информация о телефоне 111-й комнаты, что недопустимо.

Возможный способ выхода из данной ситуации приведен на рис. 5.3. Здесь показаны два отношения С_Н и Н_Т, полученные путем декомпозиции ис­ходного отношения С_Т_Н. Первое из них содержит информацию о номерах комнат, в которых располагаются сотрудники, а второе - информацию о но­мерах телефонов в каждой из комнат. Теперь, если Петрова и уволят из уч­реждения и, как следствие этого, удалят всякую информацию о нем из баз данных учреждения, это не приведет к утере информации о номере телефона в 111-й комнате.


Т Н

 

Телефон

Н_комн

3721

109

4328

111


С Н

 

Сотрудник

Н_комн

Иванов И.М.

109

Петров М.И.

111

Сидоров Н.Г.

111

Егоров В.В.

111


Рис. 5.3. Исключение избыточного дублирования

Процедура декомпозиции отношения С_Т_Н на два отношения С_Н и Н_Т является основной процедурой нормализации отношений.

Избыточное дублирование данных создает проблемы при обработке кор­тежей отношения, названные Э. Коддом «аномалиями обновления отноше­ния». Он показал, что для некоторых отношений проблемы возникают при попытке удаления, добавления или редактирования их кортежей.

 

Аномалиями будем называть такую ситуацию в таблицах БД, которая при­водит к противоречиям в БД либо существенно усложняет обработку данных.

Выделяют три основные вида аномалий: аномалии модификации (или ре­дактирования), аномалии удаления и аномалии добавления.

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

Так, например, изменение номера телефона в комнате 111 (рис. 5.2а), что представляет собой один единственный факт, потребует просмотра всей таб­лицы С_Т_Н и изменения поля Нкомн согласно текущему содержимому таблицы в записях, относящихся к Петрову, Сидорову и Егорову.

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

В той же таблице С_Т_Н удаление записи о сотруднике Иванове (напри­мер, по причине увольнения или ухода на заслуженный отдых) приводит к ис­чезновению информации о номере телефона, установленного в 109-й комнате.

Аномалии добавления возникают в случаях, когда информацию в таблицу нельзя поместить до тех пор, пока она неполная, либо вставка новой записи требует дополнительного просмотра таблицы.


 

 

Hosted by uCoz