Классика баз данных - статьи

       

в частности, что невозможно отличить


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

Предположим, что множество именованных отношений C содержит отношения S, J, D, P, Q, R из примера раздела 2.2, и что P, Q, R обладают сильной или слабой избыточностью в определенном выше смысле (в рассматриваемом нами случае не важно, какая именно избыточность имеет место). Далее, предположим, что в некоторый момент времени t банк данных находится в согласованном состоянии и не содержит никакого проекта j такого, что поставщик 2 обслуживает проект j, и проект j ведется отделом 5. Соответственно, в π12(P) не существует элемента (2,5). Пусть теперь пользователь вводит элемент (2,5) в π12(P), вставляя соответствующий элемент в P. В этот момент состояние банка данных является несогласованным. Эта несогласованность могла возникнуть вследствие оплошности, если появление (2,5) является правильным, и действительно существует проект j такой, что поставщик 2 обслуживает проект j и проект j ведется отделом 5. В этом случае очень вероятно, что пользователь собирается в ближайшем будущем добавить элементы в Q и R, результатом чего явится появление (2,j) в π12(Q) и (5,j) в π12(R). С другой стороны, ввод (2,5) мог быть ошибочным. Так могло бы получиться, если бы пользователь намеревался вставить в P некоторый другой элемент, появление которого перевело бы согласованное состояние в согласованное состояние. Суть в том, что как правило, в системе будут отсутствовать средства разрешения этого вопроса без опроса окружения системы (например, пользователя, породившего несогласованность).

Конечно, существует несколько возможных способов, при помощи которых система сможет обнаружить несогласованность и отреагировать на нее. При одном из подходов, система определяет наличие несогласованности при выполнении любой операции вставки и удаления записей или обновления ключа.Естественно, такая проверка замедлит эти операции. В случае возникновения несогласованности подробности ситуации сохраняются в системе, и, если в течение некоторого периода времени ситуация не будет исправлена, пользователь или человек, ответственный за безопасность и целостность данных, будет об этом извещен. Другой подход – производить проверку согласованности как фоновую операцию раз в день или реже. Вновь поступившие данные, появление которых вызвало несогласованность, оставшуюся в банке данных на момент проверки, могут быть установлены, если система поддерживает журнал транзакций, приводящих к изменению состояния. Второй подход будет, конечно же, предпочтительнее, если возникает только немного постоянных несогласованностей.


Содержание  Назад  Вперед