Введение в системы БД (542480), страница 89
Текст из файла (страница 89)
В соответствии с правилами вставки кортежей в представление на основе выборки (которые вполне очевидны; см. ниже) новый кортеж будет вставлен в базовую переменную-отношение поставщиков, и по этой причине он также появится в представлении, что и ожидалось. ° Теперь предположим, что в представление НЧ требуется вставить кортеж вида ('Я7', 'допев', 50, 'Раг1в'). Этот кортеж удовлетворяет одновременно двум предикатам — Б ГНЕВЕ ЯТАТУБ > 25 и Я ННЕНЕ С1ТУ = 'РагТв'. Логично предположить, что он будет вставлен в обе переменные-отношения, удовлетворяющие каждому из этих предикатов.
Тем не менее следует заметить, что вставка кортежа в одну из переменных-отношений будет иметь побочный эффект, вследствие которого кортеж окажешься автоматически вставленным и в другую переменную- отношение. Таким образом, вторую операцию вставки явно выполнять не нужно. Рассмотрим две различные базовые переменные-отношения, БА и БВ.
Переменная- отношение ЯА содержит информацию о поставщиках, для которых значение атрибута БТАТНЯ превышает 25. а в переменной-отношении БВ содержатся сведения о поставщиках из Парижа (рис. 9.3). Предположим, что представление НЧ определено как объединение Э Подобное упрощенное обозначение для кортежей перелэенной-отношения В испоеьзуется в этан разделе из соображений наелядносп|и 364 Часть |1. Реляционная модель БА ВЫ10Н ЯВ, и вновь рассмотрим операцию вставки двух уже упомянутых выше кортежей. Вставка кортежа ('ББ', 'Япгс)г', 50, 'Вове') в представление ВУ приведет к вставке кортежа в базовую переменную-отношение ЯА, что, по-видимому, и требуется.
Однако вставка кортежа ('Б7', 'допев', 50, 'Раг1в') в представление ВУ приведет к вставке кортежа в обе переменные-отношения ЯА и БВ! Полученный результат логически корректен, хотя интуитивно и не совсем понятен (именно этот резуль~ат в предыдущем подразделе был назван "несколько неожиданным"). В моем поничании подобные "неожкдагггюсти" могут ичеть место искзючингельно как следствие ктохо спроектированной стр> ктуры базы данньн. В частности, на наш взгляд, если проект базы данных позволяет одним и тем же кортежам появляться (т.е.
удовлетворять их предикатам) в разных базовых переменных-отношениях, это, определенно, плохой проект. Такая позиция (возможно, спорная) детально рассматривается в разделе 12.6 главы 12. Рис 9.3. Базовые перечвнпыв-отношения ЯА и ЯВ ~причер значений атрибуггюв) Теперь сосредоточимся на правилах удаления кортежей из представлений типа А БМ10й В. ° Правило ВЕЬЕТЕ. Если удаляемый кортеж принадлежит переменной-отношению А, то он удаляется из нее (заметьте, что данное удаление может иметь побочный эффект, вследствие которого этот же кортеж будет удален и нз переменной-отношения В).
Если после удаления кортежа из переменной-отношения А этот кортеж все еще остается в переменной-отношении В, то он будет удален и нз переменной-отношения В, В качестве упражнения придумай~с примеры, иллюстрирующие данное правило. Следует заметить, что удаление кортежа из переменной-отношения А или В может привести к "каскадному" удалению или к запуску триггерных процедур. И наконец, рассмотрим правило операции обновления. ° Правило ()РВАТЕ. Обновляемый кортеж должен быть таким, чтобы его обновленная версия уловлетворяла либо предикату РРь либо предикату РВ, либо обоим этим предикатам одновременно.
Если кортеж принадлежит переменной-отношению А, то его удаляют из нее без запуска каких-либо триггерных процедур (каскадное удаление и т.п.), запускаемых при обычной операции удаления. Кроме того, проверка удовлетворения предиката переменной-отношения А не выполняется. Следует заметить, что эта операция улаления может иметь побочный эффект, вследствие которого выбранный кортеж будет удален и из переменной-отношения В. Если после удаления из переменной-отношения А обновляемый кортеж все еще сохраняется в переменной-отношении В, то он удаляется из этой переменной-отношения (опять же, без проверки ее предиката и запуска каких-либо триггерных процедур). Далее, если обновленная версия кортежа удовлетворяет предикату РА, кортеж вставляется в переменную-отношение А (зта операция может иметь побочный эффект, вследствие 365 Глава 9.
Предепгавления которого новая версия данного кортежа может появиться и в переменной- отношении В). И наконец, если обновленная версия кортежа удовлетворяет предикату РВ, то кортеж вставляется в переменную-отношение В, но ~олько в том случае, если он не был вставлен в ланную переменную-отношение в результате побочного эффекта от вставки обновленного кортежа в переменную-отношение А. Приведенное выше правило обновления, по сути, состоит из правила удаления, за которым следует правило вставки, за исключением того, что, как указывалось и ранее, после удаления старой версии кортежа не выполняются проверка преднкатов н запуск триггерных процедур (все трнггерные процедуры, связанные с операцией обновления, концептуально выполняются после завершения всех операций удаления и вставки, непосредственно перед проверкой предикатов). Необходимо отметить одно важное следствие такого рода трактовки операции обновления, которое состоит в том, что после выполнения операции обновления представления измененный кортеж может мигрировшль из одной переменной-отношения в другую.
В базе данных, показанной на рис. 9.3, обновление кортежа ('55', 'Абака', 30, 'АсЬела') в представлении 0Ч в виде ('85', 'Аг)акя', 15, 'Раг1а') приведет к удалению старого кортежа из переменной-отношения БА и его вставке в переменную-отношение ВВ. Операция пересечения Приведем правила обновления представлений вида А 1ВТЕАВВСТ В.
Причем в данном случае ограничимся формулированием правил без каких-либо дополнительных пояснений (они аналогичны пояснениям для правил обновления объединений). Елинственное, о чем следует сказать, — это то, что для представлений вида А 1МТЕВВВСТ В преликат принимает вид (РА) АВВ (РВ). Примеры для приведенных ниже правил преллагаем читателю привести самостоятельно в качестве упражнения. ° Правило 1ХЯЕКТ. Новый кортеж должен удовлетворять предикатам РА и РВ одновременно. Если новый кортеж на текущий момент отсутствует в переменной-отношении А, то он будет вставлен в эту переменную-отношение (заметьте, что операция вставки может иметь побочный эффект, вследствие которого новый кортеж появится и в переменной-отношении В).
Если новый кортеж все еще отсутствует в переменной-отношении В, то он будет вставлен в эту переменную-отношение. ° Правило ПЕЕЕТЕ. Удаляемый из представления кортеж удаляется из переменной-отношения А (заметьте, что эта операция удаления может иметь побочный эффект, в результате которого удаляемый кортеж исчезнет и из переменной- отношения В). Если улаляемый кортеж все еще присутствует в переменной- отношении В, то он будет удален и из этой переменной-отношения.
° Правило ()РЮАТЕ. Обновляемый кортеж должен быть таким, чтобы его обновленная версия удовлетворяла одновременно обоим преднкатам РА и РВ. Кортеж удаляется из переменной-отношения А без запуска триггерных процедур и проверки предиката этой переменной-отношения (заметим, что данная операция может иметь побочный эффект, вследствие которого кортеж будет удален и из переменной-отношения В). Если до этого момента обновляемый кортеж все еще не был удален из переменной-отношения В, то он будет удален нз нее, опять же, без 366 Часть 11.
Реляционная модель запуска триггерных процедур и проверки предиката. Далее, если обновленная версия кортежа в данный момент в переменной-отношении А отсутствует, то измененный кортеж будет вставлен в переменную-отношение А (заметьте, что операция вставки также может иметь побочный эффект, вследствие которого новый кортеж автоматически появится и в переменной-отношении В).
Если измененный кортеж все еще отсутствуе~ в переменной-отношении В, то он будет вставлен и в эту переменную-отношение. Операция вычитания Ниже приведены правила обновления представлений вида А Н1ННБ В (для представлений данного вида предикат переменной-отношения можно записать так; (РА) АНВ НОТ (РВ)). ° Правило 1МЯЕКТ. Новый кортеж должен удовлетворять предикату РА и не должен удовлетворять предикату РВ. Новый кортеж вставляется в переменную- отношение А. ° Правило ВЕ).ЕТЕ. Удаляемый из представления кортеж удаляется и из переменной-отношения А.