Ваш запрос был сформулирован немного двусмысленно.Это действительно намерение найти всех менеджеров, которые являются менеджером для КАЖДОГО И КАЖДОГО сотрудника, который находится в городе X?
Как указано в dportas, в РА это вполне выполнимо.
Вот как:
Получить сбор всех сотрудников в городе X. Позвоните в EMPX.
Получите сбор всех менеджеров.Назовите это MGRS.
Сделайте декартово произведение двух.Вызовите это MGRS_EMPX.
Вычтите из этого фактическое значение таблицы (соответствующим образом спроецированное до необходимых атрибутов), в котором говорится, какие менеджеры управляют каким сотрудником.Эта разница содержит все комбинации менеджеров, которые действительно существуют, с сотрудником, который находится в X, но где этот менеджер не управляет этим сотрудником.
Проецируйте эту разницу на атрибут менеджера.Это отношение говорит вам, какие менеджеры существуют таким образом, что в городе X существует какой-то сотрудник, которым НЕ управляет этот менеджер.
Вычтите это отношение из MGRS.Очевидно, что это отношение говорит вам, какие менеджеры существуют так, что в городе X НЕ существует сотрудника, которым НЕ управляет этот менеджер.
Переписывание этого отрицания экзистенциального квантификатора как универсальной квантификации покажет, что этоэто именно тот результат, который вам нужен: NOT EXISTS (EMP: EMP находится в X, а EMP управляется MGR) === FORALL EMP: НЕ (EMP находится в X, а EMP управляется MGR) === FORALL EMP: (EMPне в X, ИЛИ EMP управляется MGR) === FORALL EMP: (если EMP находится в X, тогда EMP управляется MGR).
И все это - совершенные операции алгебры.
(дополнительное упражнение: посмотрите, что произойдет, если в городе Х вообще не будет работников).