|
Программирование >> Хронологические базы данных
Если после этого А-часть обновленного кортежа все еще отсутствует в переменной-отношении А, то А-часть вставляется в А. Если В-часть обновленного кортежа отсутствует в переменной-отношении В, то она вставляется в В. Теперь проверим возможность применения сформулированных правил ко всем трем существующим типам соединений. Соединения типа один к одному Прежде всего отметим, что в данном случае термин один к одному можно заменить более точным термином (нуль или один) к (нулю или одному) . Другими словами, имеет место ограничение целостности, гарантирующее, что для каждого кортежа переменной-отношения А будет существовать не более одного соответствующего кортежа переменной-отношения В и наоборот. А это означает, что множество атрибутов У, по которому выполняется соединение, должно быть суперключом для обеих переменных-отношений А и В (см. раздел 8.8 в главе 8, если необходимо освежить в памяти что-либо, касающееся суперключей). Примеры В качестве первого примера читателю предлагается рассмотреть эффект применения приведенных выше правил к соединению переменной-отношения поставщиков S с самой собой по атрибуту номера поставщика SI (только). Во втором примере предположим, что в базе данных поставщиков и деталей содержится еще одна переменная-отношение SR с атрибутами Sin REST, где атрибут St идентифицирует поставщика, а атрибут REST содержит данные о его любимом ресторане. Предположим, что в переменной-отношении SR представлены не все поставщики, сведения о которых имеются в переменной-отношении S. Читателю предлагается рассмотреть результат применения правила обновления к представлению, определенному как соединение вида S JOIN SR (по атрибуту St). Что изменится, если поставщик будет представлен в переменной-отношении SR, но не будет представлен в переменной-отношении S? Соединения типа один ко многим Здесь термин один ко многим можно заменить более точным термином (нуль или один) к (нулю или многим) . Другими словами, имеет место ограничение целостности, гарантирующее, что для каждого кортежа из переменной-отношения В существует не более одного соответствующего кортежа в переменной-отношении А. Обычно это означает, что множество атрибутов У, по которому выполняется операция соединения, должно содержать подмножество (скажем. К), такое, что К является потенциальным ключом для переменной-отношения А и соответствующим внешним ключом для переменной-отношения В. Замечание Если сформулированные выше требования выполняются, то выражение нуль или один можно заменить выражением точно один . Примеры. Пусть представление SSP определено следующим выражением. S JOIN SP (Безусловно, это соединение типа внешний ключ к соответствующему потенциальному ключу .) Пример содержимого этого представления показан на рис. 9.7.
Puc. 9.7. Представление SSP (значения для примера) Попытка вставить в представление SSP кортеж (S4, Clark, 20, London, Р6, 100) будет завершена успешно и приведет к вставке кортежа (S4, Р6, 100) в переменную-отношение SP (в результате чего новый кортеж появится и в представлении). Попытка вставить в представление SSP кортеж (S5, Adams, 30, Athens, Р6, 100) будет завершена успешно и приведет к вставке кортежа (S5, Р6, 100) в переменную-отношение SP (следовательно, новый кортеж добавится и к представлению). Попытка вставить в представление SSP кортеж (S6, Green, 20, London, Р6, 100) будет завершена успешно и приведет к вставке кортежа (S6, Green, 20, London) в переменную-отношение S и к вставке кортежа (S6, Р6, 100) в переменную-отношение SP (в результате чего новый кортеж появится и в представлении). Замечание. Предположим на мгновение, что в переменной-отношении SP возможно наличие кортежей, не имеющих соответствующих кортежей в переменной-отношении S. Более того, предположим, что переменная-отношение SP уже содержит несколько кортежей с номером поставщика S6 (но в этой переменной-отношении отсутствует кортеж с номером поставщика S6 и номером детали Р1). Тогда последняя из перечисленных операций вставки приведет к вставке в представление дополнительных кортежей, а именно: в нем появятся соединения кортежа (S6, Green, 20, London) переменной-отношения S и тех кортежей с номером поставщика S6, которые присутствовали в переменной-отношении SP ранее. Попытка вставить в представление SSP кортеж (S4, Clark, 20, Athens, Р6, 100) завершится неудачей (почему?). Попытка вставить в представление SSP кортеж (S1, Smith, 20, London, Pi, 400) завершится неудачей (почему?). Попытка удалить из представления SSP кортеж (S3, Blake, 30, Paris, Р2, 200) завершится успешно и приведет к удалению кортежа (S3, Blake, 30, Paris) из переменной-отношения S и кортежа (S3, Р2, 200)изпере-менной-отношения SP. Попытка удалить из представления SSP кортеж (S1, Smith, 20, London, PI, 300) завершится успешно (условно!) (см. замечание ниже) и приведет к удалению кортежа (S1, Smith, 20, London) из переменной-отношения S и кортежа (S1, Р1, 300) из переменной-отношения SP. Замечание. На самом деле общий результат приведенной операции удаления будет зависеть от установленного правила удаления внешнего ключа между отношениями поставок и поставщиков. Если указана опция RESTRICT, то данная операция удаления завершится ошибкой. Если указана опция CASCADE, то операция удаления будет иметь побочный эффект, который выразится в удалении из переменной-отношения SP дополнительно всех остальных кортежей (а значит, и кортежей представления SSP), содержащих данные о поставщике с номером S1. Попытка обновить в представлении SSP кортеж (S1, Smith, 20, London, PI, 300) к виду (SI, Smith, 20, London, PI, 400) будет успешно завершена и приведет к обновлению кортежа (S1, Р1, 300) в переменной-отношении SP к виду (S1, Р1, 400). Попытка обновить в представлении SSP кортеж (S1, Smith, 20, London, PI, 300) к виду (SI, Smith, 20, Athens, PI, 400) будет успешно завершена и приведет к обновлению кортежа (S1, Smith, 20, London) в переменной-отношении S к виду (S1, Smith, 20, Athens) и кортежа (S1, Р1, 300) в переменной-отношении SP к виду (S1, Р1, 400). Попытка обновить в представлении SSP кортеж (S1, Smith, 20, London, PI, 300) к виду (S6, Smith, 20, London, РГ, 300) будет успешно завершена (условно!) (см. замечание ниже) и приведет к обновлению кортежа (S1, Smith, 20, London) в переменной-отношении S к виду (S6, Smith, 20, London) и кортежа (Si, PI, 300) в переменной-отношении SPквидy (S6, Р1, 300). Замечание. На самом деле общий эффект приведенной выше операции обновления будет зависеть от установленного правила обновления внешнего ключа между отношениями поставок и поставщиков. Детальное рассмотрение этого вопроса мы оставляем читателю в качестве упражнения. Соединения типа многие ко многим Здесь термин многие ко многим следует заменить более точным термином (нуль или многие) к (нулю или многим) . Другими словами, не существует стандартного ограничения целостности, которое могло бы дать гарантии, аналогичные тем, которые мы имели в случае соединений первого или второго типа. Примеры. Предположим, что обсуждаемое представление определено с помощью следующего выражения. S JOIN Р
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |