Программирование >>  Хронологические базы данных 

1 ... 112 113 114 [ 115 ] 116 117 118 ... 348


Если после этого А-часть обновленного кортежа все еще отсутствует в переменной-отношении А, то А-часть вставляется в А. Если В-часть обновленного кортежа отсутствует в переменной-отношении В, то она вставляется в В. Теперь проверим возможность применения сформулированных правил ко всем трем существующим типам соединений.

Соединения типа один к одному

Прежде всего отметим, что в данном случае термин один к одному можно заменить более точным термином (нуль или один) к (нулю или одному) . Другими словами, имеет место ограничение целостности, гарантирующее, что для каждого кортежа переменной-отношения А будет существовать не более одного соответствующего кортежа переменной-отношения В и наоборот. А это означает, что множество атрибутов У, по которому выполняется соединение, должно быть суперключом для обеих переменных-отношений А и В (см. раздел 8.8 в главе 8, если необходимо освежить в памяти что-либо, касающееся суперключей).

Примеры

В качестве первого примера читателю предлагается рассмотреть эффект применения приведенных выше правил к соединению переменной-отношения поставщиков S с самой собой по атрибуту номера поставщика SI (только).

Во втором примере предположим, что в базе данных поставщиков и деталей содержится еще одна переменная-отношение SR с атрибутами Sin REST, где атрибут St идентифицирует поставщика, а атрибут REST содержит данные о его любимом ресторане. Предположим, что в переменной-отношении SR представлены не все поставщики, сведения о которых имеются в переменной-отношении S. Читателю предлагается рассмотреть результат применения правила обновления к представлению, определенному как соединение вида S JOIN SR (по атрибуту St). Что изменится, если поставщик будет представлен в переменной-отношении SR, но не будет представлен в переменной-отношении S?

Соединения типа один ко многим

Здесь термин один ко многим можно заменить более точным термином (нуль или один) к (нулю или многим) . Другими словами, имеет место ограничение целостности, гарантирующее, что для каждого кортежа из переменной-отношения В существует не более одного соответствующего кортежа в переменной-отношении А. Обычно это означает, что множество атрибутов У, по которому выполняется операция соединения, должно содержать подмножество (скажем. К), такое, что К является потенциальным ключом для переменной-отношения А и соответствующим внешним ключом для переменной-отношения В.

Замечание Если сформулированные выше требования выполняются, то выражение нуль или один можно заменить выражением точно один .

Примеры. Пусть представление SSP определено следующим выражением.

S JOIN SP

(Безусловно, это соединение типа внешний ключ к соответствующему потенциальному ключу .) Пример содержимого этого представления показан на рис. 9.7.



SNAME

STATUS

CITY

Smith

London

Smith

London

Smith

London

Smith

London

Smith

London

Smith

London

Jones

Paris

Jones

Paris

Blake

Paris

Clark

London

Clark

London

Clark

London

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 Р



1 ... 112 113 114 [ 115 ] 116 117 118 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика