Методы оптимизации выполнения запросов в реляционных СУБД


Семантическая оптимизация запросов - часть 5


База данных находится в целостном состоянии, если удовлетворяются все ранее сформулированные ограничения целостности. Транзакцией называется неделимая с точки зрения целостности базы данных последовательность действий над объектами базы данных, оставляющая базу данных в целостном состоянии. Вообще говоря, допускается нарушение целостности базы данных внутри транзакции. Поясним последнее на примере.

Пусть база данных, содержащая информацию о структуре некоторой организации состоит из двух отношений EMP и DEPT. В отношении EMP регистрируются все служащие данной организации. Соответственно, схема этого отношения EMP (EMP#, EMPNAME, DEPT#), где поле EMP# содержит уникальный номер служащего, поле EMPNANE - имя служащего, а DEPT# - номер отдела данной организации, в котором работает данный сотрудник. В отношении DEPT хранится информация об отделах. Это отношение имеет схему DEPT (DEPT#, EMPCOUNT), где в поле EMPCOUNT хранится общее число сотрудников данного отдела.

Естественным ограничением целостности для такой базы данных в синтаксисе SQL является следующее:

ASSERT A ON DEPT: EMPCOUNT = SELECT COUNT (*) FROM EMP WHERE EMP.DEPT# = DEPT.DEPT#.

Содержательно это ограничение целостности означает, что значение поля EMPCOUNT любого кортежа отношения DEPT должно быть согласовано с реальным числом сотрудников, зарегистрированных в отношении EMP как работающих в данном отделе.

Предположим, что транзакция состоит в регистрации нового сотрудника и включает два оператора

INSERT INTO EMP: <223, Smith, 3>; UPDATE DEPT SET EMPCOUNT = EMPCOUNT + 1 WHERE DEPT# = 3.

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

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


Начало  Назад  Вперед



Книжный магазин