Россия |
Нормализация
5.3 Аномалии
Вспомним, что в рамках любой модели, в том числе и в концептуальной, определяется набор ограничений целостности. Часть из них может быть выражена в логической модели, а часть нет. Может оказаться, что некоторые ограничения передаются в логическую модель неточно или неполно. Отсутствие в логической модели образов ограничений концептуальной модели определяет аномалии, проявляющиеся, в частности, при удалении, обновлении и введении данных. При неточной передаче ограничений аномалии могут проявляться при выполнении запросов к базе данных.
Рассмотрим пример неполного соответствия ограничений целостности концептуальной и логической моделей. Пусть в концептуальной модели имеются данные, которые должны пониматься в четырехзначной логике со значениями истинности "ИСТИННО", "ЛОЖНО", "НЕ ОПРЕДЕЛЕНО" и "НЕ ЗНАЮ". Отображение этих данных в логическую модель сводится к представлению их в трехзначной логике. Два последних значения истинности при этом объединятся в одно. Как бы оно не интерпретировалось, значения "НЕ ОПРЕДЕЛЕНО" и "НЕ ЗНАЮ" окажутся неразделимыми. И тогда тонкая интерпретация ряда запросов окажется невозможной. Как, например, понять результат вычисления среднего дохода группы лиц, у которых в рамках концептуальной схемы атрибут "доход" может быть помечен метками "НЕ ИЗВЕСТЕН" и "НЕ УЧИТЫВАТЬ"? А вот вставке, удалению и обновлению записей здесь ничто не мешает.
Более точно, аномалии - это противоречия между концептуальной и логической схемами базы. Для их выявления следует рассматривать и прямое и обратное отображения между схемами. Аномалия может пониматься еще как несоответствие бизнес-правил правилам работы в модели, логической или, может быть, физической. В "Семантика баз данных" будет предложен более общий подход, основанный на анализе смыслов данных.
В рамках концептуальной модели можно все свойства, выполняющиеся в предметной области, выразить в виде согласованного набора утверждений, истинных для любого состояния предметной области. Математик назвал бы эту структуру инвариантом. Заметим, что инвариант предметной области предназначен для человека и при существующем состоянии средств разработки он не может быть автоматически передан в логическую модель. Невозможность отображения ограничений при переходе к другой модели определяется еще свойствами выбранных моделей. Например, в реляционной модели не реализуются ограничения, требующие разбора значений атрибутов, которые в этой модели считаются атомарными.
Аномалии, проявляющиеся при удалении и обновлении записей, рассмотрим на примере отношения, содержащего записи о сотрудниках некоторой организации и их непосредственных начальниках (таблица 5.1). ТН - табельный номер работника, ФИО - его фамилия, имя и отчество, ТНН - табельный номер его непосредственного начальника.
ТН | ФИО | ТНН |
1 | Карпов К.К. | NULL |
2 | Иванов И.И. | 3 |
3 | Петров П.П. | 1 |
4 | Сидоров С.С. | 1 |
В концептуальной модели, по которой создавались отношения, записан набор ограничений целостности:
- структура организации имеет вид дерева;
- имеется единственный сотрудник не имеющий начальника;
- значения атрибутов ТН и ТНН в одной записи не совпадают.
В логической модели записать первое ограничение невозможно. Нет в ней понятия "дерево". Ничто не мешает, например, удалению записи о Петрове, превращающему дерево в лес. Имеем аномалию по удалению. Аномалия по обновлению наблюдается при переподчинении Петрова Иванову. Ничто не мешает изменить в третьей строке значения атрибута ТНН с 1 на 2, но в графе образуется цикл.
Аномалию по вставке кортежей проиллюстрируем на примере отношения, описывающего рабочие места и стационарные внутренние телефоны работников некоторой организации (таблица 5.2).
НОМЕР КОМНАТЫ | ФИО | ТЕЛЕФОН |
129 | Карпов К.К. | 1-29 |
129 | Иванов И.И. | 1-29 |
230 | Петров П.П. | 2-30 |
Ограничения концептуальной модели:
- в одной комнате установлен единственный внутренний телефон;
- в одной комнате могут размещаться от одного до трех сотрудников.
Попытка вставить запись (230, "Сидоров С.С", "2-31") удается, но первое ограничение целостности будет нарушено. Вам пример не кажется странным? Вроде бы номер телефона можно вычислить по номеру комнаты. Строку с номером телефона образуем так: берем первую цифру номера телефона, за ней записываем дефис, а в конце - оставшиеся две цифры номера комнаты. Все верно, только в реляционной модели значения атрибутов атомарные и описанное преобразование просто не допустимо.
Все сказанное в этом разделе может быть полностью перенесено на любые модели данных.
Существуют ограничения информационных систем, которые не могут отражаться в базе данных. Рассмотрим пример. Имеется программа для заполнения листка по учету кадров. Там должны быть фамилия, имя, отчество, дата рождения и т.д., а дальше идут таблицы, характеризующие семейное положение, место работы, место учебы и т.д. Наверно, следует обязать начинать заполнение формы с основных данных, позволяющих идентифицировать человека: фамилия, имя, отчество, дата рождения и т.д. По своей природе это ограничение интерфейса пользователя и потому не может быть реализовано в базе. Только в интерфейсе.
На самом деле ограничения целостности и аномалии - это очень общие понятия, затрагивающие всю информационную систему, а не только базу данных. Есть ограничения, которые реализуются только в трехзвенной архитектуре. Например, создаем сайт с доступом через несколько портов. Чтобы обеспечить эффективный доступ большого числа пользователей, задаем условие, по которому предусматривается возможность автоматического перенаправления пользователя на свободные порты. Реализовать это условие можно только в сервере среднего звена.
Дальше в этой главе будут, в рамках модели "сущность-связь" рассматриваться аномалии реляционных баз, проявляющиеся при выполнении вставок, удалений и обновлений.