Введение в системы БД (542480), страница 90
Текст из файла (страница 90)
° Правило 1)РВАТЕ. Обновляемый кортеж должен быть таким, чтобы его обновленная версия удовлетворяла предикату РА и не удовлетворяла предикату РВ. Кортеж удаляется из переменной-отношения А без выполнения триггерных процедур и проверки предиката. Затем обновленная версия кортежа вставляется в переменную-отношение А. Операция выборки Допустим, что выражение определения представления Ч можно задать в следующем виде: А ИНЕНЕ р. И пусть РА будет предикатом переменной-отношения А.
Тогда предикат представления Ч примет следующий вид; (РА) АМН (р). Например, предикат для операции выборки Б ИНЕНЕ С1ТТ = 'ьопг)ол' будет иметь вид (РБ) АНВ (С1ТТ = 'ьоаооп'), где РБ является предикатом переменной-отношения поставщиков. Приведем правила обновления для представлений вида А ИНЕНЕ р. ° Операция 1)ч)ЯЕВТ. Новый кортеж должен удовлетворять предикату РА и условию р. Новый кортеж вставляется в переменную-отношение А.
° Операция ВЕ).ЕТЕ. Удаляемый кортеж удаляется из переменной-отношения А. ° Операция 1)РВАТЕ. Обновляемый кортеж должен быть таким, чтобы его обновленная версия удовлетворяла предикату РА и условию р. Кортеж удаляется из переменной-отношения А без запуска каких-либо триггерных процелур и проверки предиката.
Затем в переменную-отношение А вставляется обновленная версия кортежа. Примеры. Пусть представление ЬБ определено следующим образом. РАН ЬБ Б ИНЕНЕ С1ТТ = 'Ьопг)оп' На рис. 9.4 приведен пример значений для этого представления. 367 Глава 9. Представления Рис 9.4. Предсглавление ЬБ (прииер зиичений) ° Попытка вставить в представление ЬБ кортеж вида ('Яб', 'Сгееп', 20, 'Ьопбоп') будет завершена успешно. Новый кортеж будет вставлен в переменную-отношение Я и, следовательно, появи~ся также в представлении ЬЯ. ° Попытка вставить в представление ЬЯ кор~еж вида ('Я1', 'Сгееп', 20, 'Ьопбоп' ) булет воспринята, как ошибка, поскольку этот кортеж не удовлетворяет предикату переменной-отношения Б (и, следовательно, представления ЬБ).
Причина ошибки в том, что этот кортеж нарушает требование уникальности потенциального ключа (Яб). ° Попытка вставить в представление ЬЯ кортеж вида ('Яб', 'Сгееп', 20, 'Мйелв') завершится неудачно, поскольку этот кортеж нарушает условие 01ТХ = '1опбоп'. ° Попытка удалить из представления ЬЯ кортеж ('Я1', 'Яд(ГА', 20, 'Ьопс)оп') завершится успешно. Кортеж будет удален из переменной-отношения Б и, следовательно, из представления ЬЯ.
° Попытка обновить в представлении ЬБ кортеж ('Б1', 'Яв(ГА', 20, 'Ьопбоп') к виду ('Бб', 'Сгееп', 20, 'Ьопбоп') завершится успешно. Попытка обновить тот же кортеж ('Я1', 'Бд(ГА', 20, 'Ьопбоп') к виду ('Б2', 'ЯпШ~', 20, 'Ьопс)оп') или к виду ('Б1', 'Яд(ГА', 20, 'АГАепв') будет неудачной (в каждом конкретном случае объясните, почему).
Операция проекции Этот раздел также начинаемся с рассмотрения соответствующего предиката. Пусть атрибуты переменной-отношения А (с предикатом РА) разлелены на две несвязанные группы, например Х и Х . Полагая, что Х и Х представляют собой составные атрибуты, рассмотрим проекцию А(Х) переменной-отношения А по атрибуту Х. Пусть (Х:х) будет кортежем этой проекции. Тогда, очевидно, преликатом для этой проекции будет следующий предикат: "Существует такое значение Х из домена значений атрибута Х, что кортеж (Х:х, Х:у) удовлетворяет предикату РА".
Например, рассмотрим проекцию переменной-отношения Я по атрибутам Б)(, ЯлАИЕ и 01ТХ. Для каждого кортежа (в, п, с), который входит в данную проекцию, существует значение статуса с, такое, что кортеж (в, п, с, с) удовлетворяет предикату переменной-отношения Я. Ниже приведены правила обновления проекции А(Х). ° Правило 1)чБЕКТ. Пусть (х) — кортеж, который нужно вставить, и пусть у— значение по умолчанию, выбираемое нз области значений атрибута У (будет ошибкой, если такого значения по умолчанию не существует, т.е. для атрибута т' 368 Часть |1. Реляционная модель применяется правило "значения по умолчанию запрешены")ь. Кортеж (х, у), который должен удовлетворять предикату РА, будет вставлен в переменную-отношение А. Замечание.
Так как для потенциальных ключей обычно (но не всегда) применяется правило "значения по умолчанию запрешены" (глава! 8), представление, которое содержит не все потенциальные ключи исходной переменной-отношения, обычно не допускает выполнения операций вставки. ° Правило РЕЕЕТЕ, Из переменной-отношения А будут удалены все кортежи, у которых значение атрибута Х совпадает со значением кортежа, удаляемого из представления А(Х).
Замечание. На практике желательно, чтобы множество атрибутов Х включало хотя бы один потенциальный ключ, тогда удаляемому из проекции А(Х) кортежу будет соответствовать единственный кортеж а в переменной-отношении А. Тем не менее нет никаких логических причин преврашать зто пожелание в жесткое требование.
Аналогичное замечание относится и к операции ()РСАТЕ (см. ниже). ° Правило ()Р(УАТЕ. Пусть (х) — это кортеж, который необходимо обновить, а (х') — это обновленная версия кортежа (х). Пусть а — это кортеж переменной- отношения А, имеющий те же значения атрибутов х, что и кортеж Х. И пусть значения атрибутов множества г' в кортеже а будут иметь значения у.
Сначала из переменной-отношения А будут удалены все кортежи а, отвечаюшие указанным выше требованиям, причем без выполнения триггерных процедур и проверки предиката отношения. После этого для каждого определенного выше значения у в переменную-отношение А будет вставлен кортеж (х', у), если он удовлетворяет предикату РА. Замечание. В этом определении присутствуют те "незначительные уточнения'* применительно к операции проекции, которые упоминались в принципе 5 обновления в разделе "Механизм обновления представления".
Обратите внимание, что на последнем этапе правила лля операции СРОАТЕ (этапе вставки) в каждом вставляемом кортеже восстанавливается предыдущее значение атрибутов 1 вмеето обычной замены значениями, используемыми по умолчанию, как это имеет место при выполнении самостоятельных операций 1ЕБЕЕТ. Примеры. Пусть представление ЯС определено с помошью следующего выражения. БС ( 8$, С1ТХ ) На рис. 9.5 показан пример содержимого этого представления.
Как следует из этого высказывания, здесь мы подразумеваелс что имеются какие-то средства (как в языке БДь), позволяющие устанавливать значения по умолчанию для атрибутов базовых переменных отношений. Соответствующий синтаксис языка Ти(ое(а( ХЗ может ичеть вид нового предложения в опредеяении базовой переменной отношения, например ОБРАТИТ (<список определении значений по умолчанию> ), где каждый элемент списка в параметре <список определений значений по умолчанию> ичеет вид <ичя атрибута> <значение по умолчанию>. Например, в определении переменной-отношения поставщиков Б может быть добавлено предложение РЕШАЮТ (БТАТ(ГБ 0, С1ТУ '').
369 Глава 9. Представления Рис. 9.5. Представление ЯС (значения длл ирииера) ° Попытка вставить в представление ЯС кортеж ('Яб', 'АС)зеле') будет успешной. В результате этой операции в переменную-отношение Я будет вставлен кортеж ('ЯЯ', л, С, 'АС)зепв'), где а и С являются значениями, которые используются по умолчанию лля атрибутов ЯкАИЕ и ЯТАТОЯ соответственно. ° Попытка вставить в представление ЯС кортеж ('Я1', 'АС)зеле') приведет к ошибке, так как этот кортеж не удовлетворяет предикату переменной-отношения Я (а значит, и представления ЯС).
В частности, вставка этого кортежа нарушает правило уникальности потенциального ключа (Я$». ° Попытка удалить из представления ЯС кортеж ('Я1', 'Ьолдоп') будет успешной. Кортеж поставщика с номером 'Я1' будет удален из переменной-отношения Я. ° Попытка обновить кортеж ('Я1', 'Ьопг)ол') представления ЯС к виду ('Я1', 'АС)зеле') будет успешной. Это повлечет замену в переменной-отношении Я кортежа ( ' Я1', ' Яв»С)з', 20, 'Ьопдол' ) кортежем ( ' Я1', ' Яи1С)з', 20, 'АС)зеле'), но не кортежем ('Я1', л, С, 'АС)зеле'), где и и С вЂ” значения по умолчанию. Обязательно обратите на это внимание.
° Попытка обновить в представлении ЯС тот же кортеж ('Я!', 'Ьолдоп') к виду ( ' Я2', 'Ьопдоп' ) приведет к ошибке (укажите конкретную причину). Случай, когда проекция не включает потенциальных ключей исходной переменной- отношения (например, проекция переменной-отношения Я по атрибутам ЯТАТРЯ и С1ТХ), оставлен в качестве упражнения для читателей. Операция расширения Пусть представление У создано с помощью следующего определяющего выражения. ЕХТЕЕР А АРР ехр АЯ Х (Как обычно, предикатом переменной-отношения А будет РА.) Тогда предикат РЕ представления У будет иметь такой вид.