Введение в системы БД (542480), страница 92
Текст из файла (страница 92)
Что изменится, если поставщик будет представлен в переменной-отношении БК, но не будет представлен в переменной-отношении Б? Соединения тило "один ко многим" Здесь термин "один ко многим" можно заменить более точным термином "(нуль или один) к (нулю или многим)". Другими словами, имеет место ограничение целостности, гарантирующее, что для каждого кортежа из переменной-отношения В существует не более одного соответствующего кортежа в переменной-отношении К. Обычно это означает, что множество атрибутов 1, по которому выполняется операция соединения, должно содержать подмножество (скажем, К), такое, что К является потенциальным ключом для переменной-отношения Л и соответствующим внешним ключом для переменной-отношения В.
Замечание Если сформулированные выше требования выполняются, то выражение "нуль или один" можно заменить выражением "точно один". Примеры. Пусть представление ЯЯР определено следующим выражением. Б 801М ЯР (Безусловно, это соелинение типа "внешний ключ к соответствующему потенциальному ключу".) Пример содержимого этого представления показан на рис. 9.7. 374 Часть 11 Реляционная модель БТАТСЯ С!Т с Я!чАМЕ с)ту Ящ!(А Бщ!(А Бщ(1)з Бш1СЬ Яш11Ь Яш1СЬ испек допев 31а1се С! аг1с С! аг1с С! аг1с 31 31 31 31 Б1 31 32 32 яз 34 34 34 20 20 20 20 20 20 1О !о зо 20 20 20 1лпдоп 1 опдоп 1 опдоп ! опдоп Ьопдоп Ьопдоп Раг1я Раг(я Раг1в Ьопдоп 1.опдоп 1.опдоп зоо 200 400 200 1ОО 1ОО зоо 400 200 200 зоо 400 Р1 Р2 РЗ Р4 Рб Рб Р1 Р2 Р2 Р2 Р4 РЯ Рис.
9, 7. Предстаатение ЯЯР (значения для примера) ° Попытка вставить в представление ЯЯР кортеж ('Я4', 'С1аг)с', 20, 'Ас)селя', 'Рб', 100) завершится неудачей(почему?). ° Попытка вставить в представление ЯЯР кортеж ('Я1', 'Ялс11)з', 20, 'Ьопдоп', 'Р1', 400) завершится неудачей (почему?). 375 Глава 9. Представления ° Попытка вставить в представление ЯЯР кортеж ('Я4', 'С1аг)с', 20, 'Ьопдоп', 'Рб', 100) будет завершена успешно и приведет к вставке кортежа ('Я4', 'Рб', 100) в переменную-отношение БР (в результате чего новый кортеж появится и в представлении).
° Попытка вставить в представление ЯЯР кор~еж ('Я5', 'Адапв', 30, 'Ас)села', 'Рб', 100) будет завершена успешно и приведет к вставке кортежа ('Я5', 'Рб', 100) в переменную-отношение ЯР (следовательно, новый кортеж добавится и к представлению). ° Попытка вставить в представление ЯЯР кортеж ('Яб', 'огееп', 20, 'Бопдоп', 'Рб', 100) будет завершена успешно и приведет к вставке кортежа ('Яб', '6гееп', 20, 'Ьопдоп') в переменную-отношение Я и к вставке кортежа ('Яб', 'Рб', 100) в переменную-отношение ЯР (в результате чего новый кортеж появится и в представлении). Замечание.
Предположим на мгновение, что в переменной-отношении ЯР возможно наличие кортежей, не имеющих соответствующих кортежей в переменной- отношении Я. Более того, предположим, что переменная-отношение ЯР уже содержит несколько кортежей с номером поставщика 'Бб' (но в этой переменной- отношении отсутствует кортеж с номером поставщика 'Яб' и номером детали 'Р1').
Тогда последняя из перечисленных операций вставки приведет к вставке в представление дополнительных кортежей, а именно: в нем появятся соединения кортежа ('Яб', '6гееп', 20, 'Ьопдоп') переменной-отношения Я и тех кортежей с номером поставщика 'Яб', которые присутствовали в переменной- отношении ЯР ранее. ° Попытка удалить из представления БЯР кортеж ('БЗ', 'В1а)се', 30, 'Раг1в', 'Р2', 200) завершится успешно и приведет к удалению кортежа ( ' ЯЗ', 'В!аде', 30, 'Рагзв') из переменной-отношения Б и кортежа ('БЗ', 'Р2', 200) из переменной-отношения ЯР.
° Попытка удалить из прелставления БЯР кортеж ('Б1', 'Бв1Сп', 20, 'Ьолбоп', 'Р1', 300) завершится успешно (условно!) (см. замечание ниже) и приведет к удалению кортежа ('Я1', 'Яд!10', 20, 'Ьопбоп') из переменной-отношения Я и кортежа ('Б1', 'Р1', 300) из переменной-отношения ЯР. Замечание. На самом деле общий результат приведенной операции удаления будет зависеть от установленного правила удаления внешнего ключа между отношениями поставок и поставщиков. Если указана опция КЕБТК1СТ, то данная операция удаления завершится ошибкой. Если указана опция САБСАРВ, то операция удаления будет иметь побочный эффект, который выразится в удалении из переменной- отношения ЯР дополнительно всех остальных кортежей (а значит, и кортежей прелставления ЯЯР), содержащих данные о поставщике с номером 'Я1'.
° Попытка обновить в представлении БЯР кортеж ('Я1', 'Яп1СА', 20, 'Ьопбол', 'Р1', 300) к виду ('Я1', 'ЯпИА', 20, 'Ьопбоп', 'Р!', 400) будет успешно завершена и приведет к обновлению кортежа ('Я1', 'Р1', 300) в переменной- отношении ЯР к виду ( ' Я1', ' Р1 ', 400 ) . ° Попытка обновить в прелставлении ЯЯР кортеж ('Я1', 'Яп!Сл', 20, 'Ьопбоп', 'Р1', 300) к виду ('Я1', 'Яв!СА', 20, 'АОАепв', 'Р1', 400) будет успешно завершена и приведет к обновлению кортежа ('Я1', 'Яд!00', 20, 'Ьопг)оп') в переменной-отношении Б к виду ('Б1', 'Бп!с)з', 20, 'Атпепв') и кортежа ( 'Я1', 'Р1', 300) в переменной-отношении ЯР к виду ('Я1', 'Р!', 400).
° Попытка обновить в представлении ЯЯР кортеж ('Я1', 'Яв!СА', 20, 'Ьопбоп', 'Р1', 300) к виду ('Яб', 'Яппсй', 20, '1опбоп', 'Р1', 300) будет успешно завершена (условно!) (см. замечание ниже) и приведет к обновлению кортежа ('Я1', 'Яд!сп', 20, 'Ьопбоп') в переменной-отношении Б к виду ('Яб', 'Яп!Сл', 20, 'Ьопбоп') и кортежа ('Я1', 'Р1', 300) в переменной-отношении ЯР к виду ('Яб', 'Р1', 300). Замечание. На самом деле общий эффект приведенной выше операции обновления будет зависеть от установленного правила обновления внешнего ключа между отношениями поставок и поставщиков.
Детальное рассмотрение этого вопроса мы оставляем читателю в качестве упражнения. Соединения типа "многие но многим" Здесь термин "многие ко многим" следует заменить более точным термином "(нуль или многие) к (нулю или многим)". Другими словами, не существует стандартного ограничения целое~ности, которое могло бы дать гарантии, аналогичные тем, которые мы имели в случае соединений первого или второго типа. Примеры. Предположим, что обсуждаемое представление определено с помощью следующего выражения. Я 301М Р 376 Часть П.
Реляционная модель Это соединение переменных-отношений Б и Р по атрибуту С!ТУ имеет тип "многие ко многим". Пример содержимого данного представления показан на рис. 9.8. Я!ЧАМЕ ЯТАТСЯ С1Т с' ЪЧЕ1С НТ Р!с7АМЕ СОЬОВ Яш!!)з Яш!1)з Яш!с)с допев допев В!а1се В1а!се С1аг!с С1аг!с С!аг!с Б1 Я1 Я1 Я2 Я2 ЯЗ ЯЗ Б4 Б4 Я4 20 20 20 10 10 30 30 20 20 20 1 опйоп 1 опйоп 1.опйоп Рапв Рап'в Рапв Раг!в 1.опйоп 1.опйоп 1.опйоп Р1 Р4 Р6 Р2 Р5 Р2 Р5 Р1 Р4 Р6 Хпг Ясгесч Сов Во!Г Сасп Во!Г Саш )чот Ясгесч Со Ней Ней Ней Сгееп В1пе Сгееп В!пе Ней Ней Ней 12.0 14.0 19.0 17.0 12.0 17.0 12.0 12.0 14.0 19.0 Рис.
9.8. Соединение переменных-отношений Я и Р но атрибуту СЕТУ ° Вставка в представление кортежа ('Я7', 'Вгпсе', 15, 'Ов1о', 'Р8', 'И)сее1', 'И)с1Ге', 25) будет успешно завершена и приведет к вставке кортежа ('Я7', 'Вгцсе', 15, 'Ов1о') в переменную-отношение Я и кортежа ('Р8', 'И)сее1', 'И)с1се', 25, 'Ов1о') в переменную-отношение Р (в результате указанный кортеж попадет в представление). ° Вставка в прелставление кортежа ('81', 'Япс10)з', 20, 'Ьолйоп', 'Р7', 'Иавйег', 'Кей', 5) буде~ успешно завершена и приведет к вставке кортежа ( 'Р7', 'Иав)сег', 'Кей', 5, 'Ьопйоп') в переменную-отношение Р (в результате чего в представление попадут даа кортежа — ('Я1', 'Яв11)с', 20, 'Ьопйоп', 'Р7', 'Иав)сег', 'Кей', 5) и ('34', '01аг)с', 20, 'Ьопйоп', 'Р7', 'Иавлег', 'Кей', 5)).
° Вставка в представление кортежа ('Яб', 'Огееп', 20, 'Ьопйоп', 'Р7', 'Иавйег', 'Кей', 5) будет успешно завершена и приведет к вставке кортежа ('Яб', 'Огееп', 20, '1олйоп') в переменную-отношение Я и кортежа ('Р7', 'Иавйег', 'Кей', 5, 'Ьопйоп') в переменную-отношение Р (в результате в представление будет добавлено шесть новых кортежей). ° Удаление из представления кортежа ('81', 'Ясв1сл', 20, 'Ьолйоп', 'Р1', 'Ицт', 'Кей', 12) будет успешно завершено и приведет к удалению кортежа ('Я1', 'Ясв11)с', 20, 'Ьопйол') из переменной-отношении Я н кортежа ('Р1', 'Иц1', 'Кей', 12, 'Ьолйол') из переменной-отношения Р (в результате из представления будут удалены четыре кортежа).
Дополнительные примеры читателю предлагается подготовить самостоятельно в качестве упражнения. Прочие операции 377 Глава 9. Лредатавленмя В этом разделе кратко описаны случаи использования в представлениях остальных операций реляционной алгебры. Прежде всего, отметим, что операции О-соединения, полусоединения, полувычитання и деления не примитивные, поэтому правила для них могу~ быть производными от правил для тех операций, в терминах которых они определены. Относительно других операций можно сказать следующее.
° Лереииенование. Тривиальный случай. ° ~7вкартово произведение. Как уже отмечалось в конце раздела б.4 главы б, декартово произведение является частным случаем естественного соединения (операция А 301)ч В вырождается в операцию А Т1МЕЯ В, если о~ношения А и В не имеют общих атрибутов), Поэтому правила обновления для операции декартова произведения (А Т1МЕЯ В) являются частным случаем правил обновления для операции соединения (конечно, как и правила обновления для операции пересечения А !НТЕКБЕСТ В) ° Обобщение.
Операция обобщения (Я()ММАК)г.Е) тоже не является примитивной и определяется в терминах операции расширения. Поэтому правила обновления для операции обобщения являются производными от правил обновления для операции расширения. Заиечание. Для большинства представлений, определенных с использованием операции обобщения, подавляющая часть обновлений фактически неприменима. Однако причина заключается не в том, что такие представления не обновляемы па своей сути. Попытки их обновления обычно завершаются неудачно из-за противоречий с некоторыми установленными ограничениями целостности.
Например, пусть для опрелеления представления используется следующее выражение. ЯбййЛЯТЯЯ ЯР РЯЯ ЯР ( Я)) ) ИВ Яйй ( 0ТХ ) АЯ ТОТ()ТТ Тогла попытка удаления кортежа, скажем, для поставщика с номером 'Я!', будет вполне успешной. Однако попытка вставки кортежа, скажем, ('Я5', 500), приведе~ к ошибке, поскольку эта попытка нарушает ограничение, согласно которому значение атрибута ТОТОТУ лолжно быть равным сумме всех соответствующих отдельных значений 0ТТ. Попытка вставить кортеж ('Я5', 0) тоже приведет к ошибке, но уже по другой причине (по какой?). ° Группирование и разгр>ппированив. Все замечания, которые были сделаны для операции полведения итогов, справедливы и для этих операций.
° Транзипзивнае заиыканис. 1!очти такие же замечания применимы и в данном случае. 9.5. Моментальные снимки Здесь будет умес~но, несколько отклонившись от основной темы, обсудить понятие моментальнык снимков (зпарз)зогз) (9.2], Моментальные снимки в действительности имеют много общего с представлениямиз, но не следует путать эти понятия. Как и представления, моментальные снимки — это производные переменные-отношения, но в отличие от представлений снимки реальны, а не виртуальны, т,е. снимки предо~валяются в базе ланных не ~олько своими определениями в терминах других переменных-отношений, но и (по крайней мере, концептуально) собственной овеществленной копией данных, как, например, показано ниже.