с использованием оператора case состоит
trucker: RESTRICT (trucker
to E# = X); secretary: RESTRICT (secretary
to E# = X); engineer: RESTRICT (engineer:
to E# = X)
end
RETRIEVE T;
Проблема с использованием оператора case состоит в том, программа становится зависимой от родовых компонентов "employee" в один из моментов времени. Если нанимают служащего нового типа (скажем, "cторожа" (guard)), то программа не будет работать, когда будет введен номер служащего-сторожа.
Эта "зависимость от времени" может быть устранена с помощью оператора более высокого порядка, который мы назовем SPECIFY. При заданном имени отношения оператор SPECIFY будет возвращать отношение с таким именем. Теперь можно переписать программу так, как показано ниже.
READ X; R < RESTRICT (employee
to E# = X); S < PROJECT (R
on TN); T < SPECIFY S; U < RESTRICT (T
to X); RETRIEVE U;
Новая программа независима от родовых компонентов "employee" в любой момент времени.
Введение примитивов более высокого порядка может, таким образом, повысить стабильность программ при эволюционировании базы данных в соответствии с реальным миром. Не ясно, какие другие операторы высших порядков полезны наряду с SPECIFY. Насколько нам известно, эти аспекты программирования приложений должны еще быть исследованы.
Содержание Назад Вперед