Как отмечалось в главе 4, каждое отношение имеет ассоциируемое с ним значение или предикат, и пользователи должны обращать внимание на эти предикаты, чтобы правильно использовать базу данных. Заметьте, что сказанное относится как к выборке данных, так и к их обновлению. Однако вопрос возникает прежде всего в связи с обновлением, поскольку, как объяснялось в главе 4, предикат - это критерий допустимости обновления для данного отношения, с помощью которого можно установить, например, будет ли корректной определенная операция обновления (как вы действительно убедились при обсуждении операций обновления в приведенном выше примере).
Предикаты для базовых отношений предполагаются известными - они содержат, главным образом, всякие ограничения целостности (например, ограничения потенциальных ключей, внешних ключей и, возможно, другие ограничения), предъявляемые к данному отношению. Ну а как же насчет производных отношений? Для этого, очевидно, нам нужен такой набор правил, которые позволяют установить предикат для результата произвольной реляционной операции, если известен предикат или предикаты для входных данных этой операции.
|
|
На самом деле очень просто определить такой набор правил - они непосредственно следуют из определений операций. Например, если А и В - два произвольных совместимых по типу отношения, а их соответствующие предикаты- РА и РВ, то предикат РС для выражения (назовем его С) А INTERSECT В будет, очевидно, (PA) AND (PB); т.е. кортеж t будет принадлежать С, если и только если PA(t) - истина и РВ(t) - истина. Так, например, если мы определяем С как представление и пытаемся вставить кортеж t в это представление, то кортеж t должен удовлетворять предикату
для А и предикату для В, иначе операция вставки не будет выполнена. (далее в этой книге мы еще вернемся к обсуждению обновлений представлений.)
Вот еще один пример: предикат для отношения, являющегося результатом операции выборки
R WНERE condition
будет такой: (PR) AND (condition), где PR - предикат для отношения R.
Формулировку предикатов, отвечающих другим операторам реляционной алгебры, оставляем в качестве упражнения для пользователя.