СОТРУДНИКИ (СОТР_НОМЕР, СОТР_ИМЯ, СОТР_ЗАРПЛ,
ОТД_НОМЕР)
ОТДЕЛЫ(ОТД_НОМЕР, ОТД_КОЛ, ОТД_НАЧ)
Мы хотим узнать имена и номера сотрудников, являющихся начальниками отделов с количеством работников более 10. Выполнение этого запроса средствами реляционной алгебры распадается на четко определенную последовательность шагов:
(1).выполнить соединение отношений СОТРУДНИКИ и ОТДЕЛЫ по условию СОТР_НОМ = ОТДЕЛ_НАЧ.
(2).из полученного отношения произвести выборку по условию ОТД_КОЛ > 10
(3).спроецировать результаты предыдущей операции на атрибуты СОТР_ИМЯ, СОТР_НОМЕР
Заметим, что порядок выполнения шагов может повлиять
на эффективность выполнения запроса. Так, время выполнения приведенного
выше запроса можно сократить, если поменять местами этапы (1) и (2). В
этом случае сначала из отношения СОТРУДНИКИ будет сделана выборка всех
кортежей со значением атрибута ОТДЕЛ_КОЛ > 10, а затем выполнено соединение
результирующего отношения с отношением ОТДЕЛЫ. Машинное время экономится
за счет того, что в операции соединения участвуют меньшие отношения.
На языке реляционного исчисления данный запрос может
быть записан как:
Здесь мы указываем лишь характеристики результирующего
отношения, но не говорим о способе его формирования. СУБД сама должна решить
какие операции и в каком порядке надо выполнить над отношениями СОТРУДНИКИ
и ОТДЕЛЫ. Задача оптимизации выполнения запроса в этом случае также ложится
на СУБД.