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