Имеются отношения СЛУЖАЩИЕ и ПРОЕКТЫ:
СЛУЖАЩИЕ | |||
---|---|---|---|
СЛУ_НОМЕР | СЛУ_ИМЯ | СЛУ_ЗАРП | ПРО_НОМ |
2934 | Иванов | 22400.00 | 1 |
2935 | Петров | 29600.00 | 1 |
2936 | Сидоров | 18000.00 | 1 |
2937 | Федоров | 20000.00 | 1 |
2938 | Иванова | 22000.00 | 1 |
2934 | Иванов | 22400.00 | 2 |
2935 | Петров | 29600.00 | 2 |
2939 | Сидоренко | 18000.00 | 2 |
2940 | Федоренко | 20000.00 | 2 |
2941 | Иваненко | 22000.00 | 2 |
ПРОЕКТЫ | |
---|---|
ПРО_НОМ | ПРОЕКТ_РУК |
1 | Иванов |
2 | Иваненко |
Определены кортежные переменные СЛУ и ПРО на отношениях СЛУЖАЩИЕ и ПРОЕКТЫ соответственно. При потребности в дополнительных переменных будем считать, что они также определены и именуются путем добавления цифр в конце имен СЛУ и ПРО.
Определены также доменные переменные, имена которых совпадают с именами атрибутов отношений СЛУЖАЩИЕ и ПРОЕКТЫ, а в случае, когда требуется несколько доменных переменных, определенных на одном домене, будем добавлять в конце имени цифры.
Какое из приведенных ниже выражений реляционного исчисления доменов правильно соответствует запросу "выдать имена служащих, участвующих хотя бы в одном проекте, среди участников которого имеется хотя бы один служащий, получающий максимальную зарплату среди всех служащих"?
СЛУ_ИМЯWHERE СЛУЖАЩИЕ (СЛУ_ИМЯ:СЛУ_ИМЯ, ПРО_НОМ:ПРО_НОМ) AND FORALL СЛУ_ЗАРП1 IF СЛУЖАЩИЕ (СЛУ_ЗАРП:СЛУ_ЗАРП1, ПРО_НОМ:ПРО_НОМ) THEN FORALL СЛУ_ЗАРП2 (СЛУ_ЗАРП2 >= СЛУ_ЗАРП1)
СЛУ_ИМЯWHERE СЛУЖАЩИЕ (СЛУ_ИМЯ:СЛУ_ИМЯ, ПРО_НОМ:ПРО_НОМ) AND EXISTS СЛУ_ЗАРП1 (СЛУЖАЩИЕ (СЛУ_ЗАРП:СЛУ_ЗАРП1, ПРО_НОМ:ПРО_НОМ) AND FORALL СЛУ_ЗАРП2 (СЛУЖАЩИЕ (СЛУ_ЗАРП:СЛУ_ЗАРП2) AND СЛУ_ЗАРП1 >= СЛУ_ЗАРП2))(Верный ответ)
СЛУ_ИМЯWHERE СЛУЖАЩИЕ (СЛУ_ИМЯ:СЛУ_ИМЯ, ПРО_НОМ:ПРО_НОМ) AND EXISTS СЛУ_ЗАРП1 (СЛУЖАЩИЕ (СЛУ_ИМЯ:СЛУ_ИМЯ, СЛУ_ЗАРП:СЛУ_ЗАРП1, ПРО_НОМ:ПРО_НОМ) AND FORALL СЛУ_ЗАРП2 (СЛУЖАЩИЕ (СЛУ_ИМЯ:СЛУ_ИМЯ, СЛУ_ЗАРП:СЛУ_ЗАРП2, ПРО_НОМ:ПРО_НОМ) AND СЛУ_ЗАРП2 >= СЛУ_ЗАРП1)