Классика баз данных - статьи



         

Заключительные замечания - часть 5


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. Насколько нам известно, эти аспекты программирования приложений должны еще быть исследованы.




Содержание  Назад  Вперед