Реляционное исчисление является безопасным, если
Реляционное исчисление является безопасным, если выполнятся следующие условия:
1) из истинности ?(t) следует, что каждый компонент кортежа t принадлежит – D(?);
2) для любой подформулы вида (u)(?1(u)), входящей в состав ф, из истинности ?1(u) следует, что u принадлежит – D(?1);
3) для любой подформулы вида (u)(?1(u)), входящей в состав ?, из истинности ?1(u) следует, что u не принадлежит D(?1), или же, что то же самое, из истинности ¬?1(u) следует, что u принадлежит D(?1).
При выполнении этих условий выражение {t|?(t)} является безопасным. Выражению (u)(?1(u)) эквивалентно выражение ¬(u)(¬?1(u)).
На основании вышеизложенного можно утверждать, что если формула ?(t) такова, что любая ее подформула вида (u)(?i(u)) или (u)(?j(u)) безопасна, то безопасно каждое выражение вида
{t|R(t) ??(t)}. Действительно, любой кортеж, удовлетворяющий формуле (R(t) ??(t)), принадлежит в соответствии с этой формулой отношению R. Следовательно, каждый из его компонентов будет принадлежать также и множеству элементов D(R(t) ??(t)). Тогда в силу выполнения условия 1 (выполнение условий 2 и 3 задано как исходная предпосылка) выражение { t|R(t) ??(t)} – безопасное. Если в ?(t) найдется хотя бы одна из подформул вида (u)(?i(u)) или (u)(?j(u)), которая окажется не безопасной, то тогда и выражение {t|R(t) ??(t)} не будет безопасным. Если в формуле ?(t) вообще отсутствуют подформулы вида (u)(?i(u)) или (u)(?j(u)) – или соответствующие им эквивалентные -¬(u)(¬?i(u)) или ¬(u)(¬?j(u)), – то выражение {t|R(t) ??(t)} всегда является безопасным.
Например, если ?(t)=¬R2(t) то получим безопасное выражение {t|R1(t) ?¬R2(t)} соответствующее операции разности отношений в реляционной алгебре (R1–R2).
Безопасным является также выражение {t|R(t)}, соответствующее выражению R (точнее – переменной R, обозначающей отношение).