Развитие идей и приложений реляционной СУБД System R


Трансляция запросов и поддержка времени выполнения - часть 7


Здесь следует сделать два замечания. Первое замечание касается обработки запросов на изменение отношений базы данных (INSERT, DELETE и UPDATE). Как и в любом другом запросе, в запросах этого вида изменения могут относиться и к базовым отношениям, и к представлениям. Но далеко не для всех представлений определена семантика операций изменения. На самом деле, при выполнении оператора SQL CREATE VIEW производится анализ создаваемого представления на предмет возможности выполнения над ним операций изменения. Мы не будем вдаваться в подробности этого анализа (это отдельная и важная тема, которой до сих пор посвящается много публикаций), но заметим, что в описателе представления помечено, разрешены ли над представлением операции изменения. Если при выполнении третьего шага оптимизатора выясняется, что в запросе на изменение отношения базы данных используется "неизменяемое" представление, то это рассматривается как фатальная ошибка прекомпиляции с соответствующими последствиями.

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

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




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