|
Программирование >> Хронологические базы данных
Puc 9.4. Представление LS (пример значений) Попытка вставить в представление LS кортеж вида (S6, Green, 20, London) будет завершена успешно. Новый кортеж будет вставлен в переменную-отношение S и, следовательно, появится также в представлении LS. Попытка вставить в представление LS кортеж вида (S1, Green, 20, London) будет воспринята, как ошибка, поскольку этот кортеж не удовлетворяет предикату переменной-отношения S (и, следовательно, представления LS). Причина ошибки в том, что этот кортеж нарушает требование уникальности потенциального ключа {S#}. Попытка вставить в представление LS кортеж вида (S6, Green, 20, Athens) завершится неудачно, поскольку этот кортеж нарушает условие CITY = London. Попытка удалить из представления LS кортеж (S1, Smith, 20, London) завершится успешно. Кортеж будет удален из переменной-отношения S и, следовательно, из представления LS. Попытка обновить в представлении LS кортеж (S1, Smith, 20, London) к виду (S6, Green, 20, London) завершится успешно. Попытка обновить тот же кортеж (S1, Smith, 20, London) к виду (S2, Smith, 20, London) или к виду (S1, Smith, 20, Athens) будет неудачной (в каждом конкретном случае объясните, почему). Операция проекции Этот раздел также начинается с рассмотрения соответствующего предиката. Пусть атрибуты переменной-отношения А (с предикатом РА) разделены на две несвязанные группы, например X и Y . Полагая, что X и Y представляют собой составные атрибуты, рассмотрим проекцию А{Х} переменной-отношения А по атрибуту X. Пусть {Х:х} будет кортежем этой проекции. Тогда, очевидно, предикатом для этой проекции будет следующий предикат: Существует такое значение у из домена значений атрибута Y, что кортеж {Х:х, Y:y} удовлетворяет предикату РА . Например, рассмотрим проекцию переменной-отношения S по атрибутам St, SNAME и CITY. Для каждого кортежа (s, п, с), который входит в данную проекцию, существует значение статуса t, такое, что кортеж (s, п, t, с) удовлетворяет предикату переменной-отношения S. Ниже приведены правила обновления проекции А{Х}. Правило INSERT. Пусть (х) - кортеж, который нужно вставить, и пусть у - значение по умолчанию, выбираемое из области значений атрибута Y (будет ошибкой, если такого значения по умолчанию не существует, т.е. для атрибута Y применяется правило значения по умолчанию запрещены ). Кортеж (х, у), который должен удовлетворять предикату РА, будет вставлен в переменную-отношение А. Замечание. Так как для потенциальных ключей обычно (но не всегда) применяется правило значения по умолчанию запрещены (глава 18), представление, которое содержит не все потенциальные ключи исходной переменной-отношения, обычно не допускает выполнения операций вставки. Правило DELETE. Из переменной-отношения А будут удалены все кортежи, у которых значение атрибута X совпадает со значением кортежа, удаляемого из представления А{Х}. Замечание. На практике желательно, чтобы множество атрибутов X включало хотя бы один потенциальный ключ, тогда удаляемому из проекции А{Х} кортежу будет соответствовать единственный кортеж а в переменной-отношении А. Тем не менее нет никаких логических причин превращать это пожелание в жесткое требование. Аналогичное замечание относится и к операции UPDATE (см. ниже). Правило UPDATE. Пусть (х) - это кортеж, который необходимо обновить, а (х) - это обновленная версия кортежа (х). Пусть а - это кортеж переменной-отношения А, имеющий те же значения атрибутов х, что и кортеж X. И пусть значения атрибутов множества Y в кортеже а будут иметь значения у. Сначала из переменной-отношения А будут удалены все кортежи а, отвечающие указанным выше требованиям, причем без выполнения триггерных процедур и проверки предиката отношения. После этого для каждого определенного выше значения у в переменную-отношение А будет вставлен кортеж (х, у), если он удовлетворяет предикату РА. Замечание. В этом определении присутствуют те незначительные уточнения применительно к операции проекции, которые упоминались в принципе 5 обновления в разделе Механизм обновления представления . Обратите внимание, что на последнем этапе правила для операции UPDATE (этапе вставки) в каждом вставляемом кортеже восстанавливается предыдущее значение атрибутов Y вмеЬто обычной замены значениями, используемыми по умолчанию, как это имеет место при выполнении самостоятельных операций INSERT. Примеры. Пусть представление SC определено с помощью следующего выражения. SC { S#, CITY } На рис. 9.5 показан пример содержимого этого представления. Как следует из этого высказывания, здесь мы подразумеваем, что имеются какие-то средства (как в языке SQL), позволяющие устанавливать значения по умолчанию для атрибутов базовых переменных отношений. Соответствующий синтаксис языка Tutorial D может иметь вид нового предложения в определении базовой переменной отношения, например DEFAULT (<список определений значений по умолчанию> }, где каждый элемент списка в параметре <список определений значений по умолчанию> имеет вид <имя атрибута> <значение по умолчанию>. Например, в определении переменной-отношения поставщиков S может быть добавлено предложение DEFAULT (STATUS О, CITY ).
Puc. 9.5. Представление SC (значения для примера) Попытка вставить в представление SC кортеж (S6, Athens) будет успешной. В результате этой операции в переменную-отношение S будет вставлен кортеж (S6, п, t, Athens), где л и t являются значениями, которые используются по умолчанию для атрибутов SNAME и STATUS соответственно. Попытка вставить в представление SC кортеж ( S1, Athens) приведет к ошибке, так как этот кортеж не удовлетворяет предикату переменной-отношения S (а значит, и представления SC). В частности, вставка этого кортежа нарушает правило уникальности потенциального ключа {St}. Попытка удалить из представления SC кортеж (S1, London) будет успешной. Кортеж поставщика с номером S1 будет удален из переменной-отношения S. Попытка обновить кортеж (S1, London) представления SC к виду (S1, Athens) будет успешной. Это повлечет замену в переменной-отношении S кортежа (S1, Smith, 20, London) кортежем (SI, Smith, 20, Athens), но не кортежем (SI, п, t, Athens), где л и t- значения по умолчанию. Обязательно обратите на это внимание. Попытка обновить в представлении SC тот же кортеж (S1, London) к виду ( S2, London) приведет к ошибке (укажите конкретную причину). Случай, когда проекция не включает потенциальных ключей исходной переменной-отношения (например, проекция переменной-отношения S по атрибутам STATUS и CITY), оставлен в качестве упражнения для читателей. Операция расширения Пусть представление V создано с помощью следующего определяющего выражения. EXTEND А ADD ехр AS X (Как обычно, предикатом переменной-отношения А будет РА.) Тогда предикат РЕ представления V будет иметь такой вид. РА ( а } AND е.Х = ехр ( а ) Здесь е - это кортеж представления V, а а - кортеж, который остается, когда добавленный с помощью операции расширения компонент X удаляется (т.е. проще говоря, а - это проекция кортежа е по всем атрибутам переменной-отношения А). На обычном языке это можно сформулировать следующим образом.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |