Введение в системы БД (542480), страница 91
Текст из файла (страница 91)
РА ( а ) АЕР е.Х = ехр ( а ) Здесь е — это кортеж представления У, а а — кортеж, который остается, когда добавленный с помощью операции расширения компонент Х удаляется (т.е. проще говоря, а— это проекция кортежа е по всем атрибутам переменной-отношения А). На обычном языке это можно сформулировать следующим образом. З7О Часть 11. Реляционная модель ипнакатзиззрайц 6 тзвзззгу д кинэпзоню-доннэнэдэп еи, 1б, ноьсмкм з ежэтдом сминэкепЛ м ыеэаибп и ионптэпзЛ тэпЛд, тс(, пол<нем з жэздом чтикепЛ емззчпоц ° (6Лнэьон) ЛьепЛэн типбэюп (Вв(сд ',атлс(, 'г( ',рэп, ',6од, ',1б,) жэтбом чзиаиза емззчпоц ° (ЛЛнэьоп) Ллепуэн зипс(эзоп (6кв~ ',аттаеб, 'гт ',рап, ',6од, ',дд,) жш$ом чзиаезза вшчпоц ° б эинэпзоню-осЛннэнэдэп а (,аттеб, ',рам, ',6од, ',(б,) ежэтдом эмаетза м зэпэаидп и онпшпзЛ енэпзбэа -ес ыпЛд (8вкс ',аттаед, 'г( ',раМ, ',6од, ',(б,) жэтдом чтиаеиа емззчпоц ° (одвнпди кнр кпнэлпзса) убз) апнэсвошзрэбд д д епд .кинэкаеззпэбп озою иинэьенс хсчнжоиеоа бэнидп нэпэаидп д 6.зид ец ию яе ( ~л + жнивьи ) аале б аяыхя кинэжебсча озэпсосЛпэкз осчпзоноп з онэкэпэдпо ус(л эинэкаетзеэбп чззЛц ш1алпс~ц х знэнопном иэпсосеьсмкмзи 'иипмэодп иипедэпо ноаюпэдзоп,э ежэсбом си нэпжодоп исчдоюм ',е жэтбом нэкаеюа ыпдд тс эинэспоню-осЛннэнэбэп а нэт -ев у знэнонном иэпсозеьсмнмзи 'иипмэодп иипедэпо ноатзеэдзоп э ежэтдом си нэеж -одоп итчдоюм 'е жидом иэлепЛ юп Лд кннмпоню-ионнэнэбэп дою етемипэдп имйа -одп н дЛпэпобп хсчндэззибс кинэнкоьчча сэд хс кинэспоню-ноннэиэдэп си екеьенд дб Лсемипэдп чзндоасэкаоеЛ нэжкое,э жэзбом иэьиди 'э ежэздом кизбэе кеннэк -аондо —,э е 'чзиаондо онжЛн исчбозом 'жэтдом ою — э чюЛц 'стус(дд окиаедц ° ), тнэнопвсом дэпсосеьсмамзи 'иипмэодп иипедэпо иоаюпэдзоп э ежэтбом еи дсчннэежодоп 'е жэтдом нэкееЛ спуд )с кинэпзоню-дон -нэнэбэп сИ чзикепЛ онжЛн дсчдоюм 'жэтдом ою — э чсзЛц 'Ид„д )Зц ониаедц ° 'х з.нэнопном иэпзосеьсмсосзи 'иипмэодп иипедэпо иоатзпэдзоп э ежэтдом си дсчннэежодоп 'е жэтбом нэкаиза юпуд ь эинэпсоню-осЛннэнэбэп д дд Лсемипэдп чзкдоатэкаопЛ нэжкоп нО чтиаетза онжЛн исчдозом 'жэз.бом оы — э чюЛц т,з)аду оииаедц ° 'кинэдиспзеб иип -ебэно смчтпоноп з хзчнэккэпэдпо 'иинэкаеззпэдп ккп кинэкаондо екиаедп нэпэаидц е пжвисдом кс р дха кпнвжп0зчв кпнэизпл ив Лшошчьпеад онвоосу ошнэноишом эпнэлонс (~ .'уб Лшомпрвби зиаы1овшвкворХ 'у шнвношсон рв)посолоскнзп 'ппЬмвоби пззпоссаио повшзрэдзои а ожвш0ом лп рлзиэплЛсои 'в жазидом (р:овшзровз аппзозлр -акз шаапп кпнвдптзоб ппподэио ппнвтонсно исвЗпозАЫпшчИсэд в а жвшбом пиржо)( ° Попыткаобновить кортежеключом 'Р1' к виду ('Р1', 'Ма0', 'йеб', 10, 'Раг(в', 4540) будет успешной и приведет к замене кортежа ('Р1', 'йц1', 'йеб', 12, 'Ьопбоп') в переменной-отношении Р кортежем ('Р1', 'Бат', 'йег)', 10, 'Рагфа').
° Закончится неудачей попытка обновить тот же кортеж посредством замены номера летали номером 'Р2' (без изменения остальных атрибутов) или попытка его приведения к виду, в котором значение атрибута 6М)4Т не буде~ равно значению атрибута )4Е16НТ, умноженному на 454 (в каждом случае укажите причину неудачи). Операция соединения В большинстве предлагавшихся ранее трактовок проблемы обновлении представлений (включая трактовки, изложенные в предыдущих редакциях этой книги и в других книгах автора) утверждалось, что для результата операции соединения возможность (или невозможность) его обновления зависит (по крайней мере, частично) от того, принадлежит ли соединение к типу "один к одному", "один ко многим" или "многие ко многим". В отличие от всех предыдущих трактовок проблемы обновления подобных представлений здесь автор утверждает, что результат операции соединения обновляем всегда.
Более того, для всех трех перечисленных типов соединений правила идентичны и, в целом, вполне очевидны. Правдоподобность этого утверждения, на первый взгляд кажущегося удивительной, подкрепляется новым видением проблемы, ставшим возможным благодаря принятию золотого прпвича, что мы и постараемся сейчас пояснить.
В общем случае назначение функции поддержки представлений всегда состояло в стремлении стереть, насколько это возможно, разницу между представлениями и базовыми переменными-отношениями, что весьма похвально. Тем не менее ° обычно предполагалось (неявно), что отдельный кортеж базовой переменной- отношения всегда можно обновить независимо от всех остальных кортежей этой базовой переменной-отношения; ° в то же время очевидно (явно), что обновить отдельный кортеж представления независимо от всех остальных кортежей этого представления возможно не всегда.
Например, в [! 1.2) Кодл показал, что из результата определенного соединения невозможно удалить хотя бы один кор~еж, так как это приведет к получению отношения, которое "вовсе не является соединением двух каких-либо отношений" (это, в свою очередь, означает, что результат, возможно, не будет удовлетворять предикату переменной- отношения представления). Исторически сложилось так, что подобные операции обновления представлений полностью отбрасывались ввиду невозможности сделать эти операции полностью идентичными обновлениям базовых переменных-отношений. Наш подход значительно отличается от изложенного выше.
Говоря конкретнее„мы признаем тот факт, что даже в базовых переменных-отношениях не всегда можно обновить отдельный кортеж независимо от остальных кортежей. Поэтому мы принимаем как допустимые те операции обновления представлений, которые по сложившейся традиции не рассматривались, и даем интерпретацию этих операций в виде четкого и логически корректного способа обновления исходных переменных-отношений. Более того, мы принимаем эти операции с полным пониманием того факта, что обновление 372 Часть |1 Реляционная модель исходных переменных-отношений может оказывать побочный эффект на представления.
Однако такие побочные эффекты неизбежны и необходимы, так как в противном случае возникает опасность, что представление перестанет удовлетворять своему предикату. Закончив вступительную часть, давайте перейдем к собственно обсуждению проблемы. Прежде всего определим необходимые термины. После этого приведем правила обновления представлений на основе соединений.
Затем рассмотрим применение этих правил для каждого из трех типов соединений ("один к одному", "один ко многим", "многие ко многим"). Рассмотрим соединение Л = л Л01И В. Здесь (как и в разделе 6.4 главы 6) переменные-отношения й, В и Л имеют заголовки (Х, У), (У, Е) и (Х, 1, Е) соответственно.
Пусть РЛ и Р — это предикаты переменных-отношений й и В. Тогда предикат РЮ представления о будет иметь следующий вид. Р)( ( а ) ййй РВ ( Ь ) Здесь для каждого заданного кортежа > соединения а является "А-частьюм кортежа ) (т.е. а — это кортеж, порождаемый из кортежа ) посредством операции проекции, исключающей компонент Е), а Ь является "В-частью" кортежа 1 (т.е. кортежем, порождаемым из кар~ежа ) посредством операции проекции, исключающей компонент Х).
Другими словами, Каждый кортеж в соединении таков, чта А-часть удовлетворяет предикату РА, а В-часть удовлетворяет предикату РВ. Например, преднкат для соединения переменных-отношений Я и ЯР по атрибуту Я() можно сформулировать следующим образом. Каждый кортеж (в, п, С, с, р, г)) в соединении таков, что кортеж (в, и, С, с) удовлетворяет преликату переменной-отношения Я, а кортеж (я, р, с)) удовлетворяет предикату переменной-отношения ЯР. Приведем правила обновления представлений вида о = й о01й В. ° Правило!ХЯЕВТ.
Новый кортеж) должен удовлетворять предикату Р3. Если А- часть кортежа ) не входит в переменную-отношение А, то она вставляешься а Ат. Если В-часть не присутствует в переменной-отношении В, то она вставляется в В. ° Правило ВЕЕЕТЕ. А-часть удаляемого кортежа удаляется из переменной- отношения А и В-часть удаляемого кортежа удаляется из переменной-отношения В.
° Правило ()РВАТЕ. Обновляемый кортеж должен быть таким, чтобы его обновленная версия удовлетворяла предикату Р3. А-часть этого кортежа удаляешься из переменной-отношения А без выполнения каких-либо триггерных процедур и проверки предиката, а В-часть кортежа удаляется нз переменной-отношения В, опять же, без выполнения каких-либо триггерных процедур и проверки предиката. З Опьметим, что операция 1МБЕВР лютею иметь побочный эффект, вследствие которого В- часть кортежа ) будет вставлена в переменную-оптоигение В, как в случае с представлениями, основанными на объединении, пересечении и вычитании (см.
выме) Аначогичнае замечание касается правил для представлений, основанных на операцинл ЭЕЕЕТЕ и ()РРХТЕ Для краткости мы не будем вам докучать, деталыю рассматривая возможность побочных эффеюпов в каждол1 случае. Глава 9. Представления Если после этого А-часть обновленного кортежа все еше отсутствует в переменной-отношении А, то А-часть вставляется в А. Если В-часть обновленного кортежа отсутствует в переменной-отношении В, то она вставляется в В.
Теперь проверим возможность применения сформулированных правил ко всем трем существующим типам соединений. Соединения типа "один к одному" Прежде всего отметим, что в данном случае термин "один к одному" можно заменить более точным термином "(нуль или один) к (нулю или одному)*'. Другими словами, имеет место ограничение целостности, гарантирующее, что для каждого кортежа переменной-отношения К будет существовать не более одного соответствующего кортежа переменной-отношення В и наоборот. А это означает, что множество атрибутов У, по которому выполняется соединение, должно быть суперключом для обеих переменных- отношений К и В (см.
раздел 8.8 в главе 8, если необходимо освежить в памяти что-либо, касающееся суперключей). Прин еры ° В качестве первого примера читателю предлагается рассмотреть эффект применения приведенных выше правил к соединению переменной-отношения поставщиков Я с самой собой по атрибуту номера поставщика Я8 (только).
° Во втором примере предположим, что в базе данных поставщиков и деталей содержится еше одна переменная-отношение БК с атрибутами Я8 и КЕЯТ, где атрибут 8$ идентифицирует поставщика, а атрибут КЕЯТ содержит данные о его любимом ресторане. Предположим, что в переменной-отношении ЯК представлены не все поставщики, сведения о которых имеются в переменной-отношении Б. Читателю предлагается рассмотреть результат применения правила обновления к представлению, определенному как соединение аида Я 101Ы ЯК (по атрибуту Я8).