Безопасность выражений

Прежде чем завершить этот раздел, отметим, что выражение реляционного исчисления может генерировать бесконечную последовательность кортежей. Например, таковым является следующее выражение, которое обозначает все кортежи, не принадлежащие к отношению Staff:

Выражения такого рода принято называть опасными. Для того чтобы избежать возникновения этой проблемы, необходимо ввести ограничение, согласно которому все значения, присутствующие в полученных результатах, должны принадлежать к области определения исходного выражения Е; для этого служит обозначение dom(E). Областью определения выражения Е являются все значения, явно присутствующие в Е или в одном или нескольких отношениях, имена которых упоминаются в выражении Е. В данном примере областью, определения выражения являются все значения, представленные в отношении Staff.

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