П. Г. Демидова А. В. Зафиевский А. А. Короткин А. Н. Лататуев Базы данных Учебное пособие
Download 1.32 Mb. Pdf ko'rish
|
Базы данных
проект
сотр_имя отд_номер проект объем_финансиров ания Пр1 Меньшиков О.Е. 1 Пр1 100000 Пр1 Домогаров А.Ю. 2 Пр2 234000 Пр1 Безруков С.В. 2 Пр3 150000 Пр2 Меньшиков О.Е. 1 Пр2 Домогаров А.Ю. 2 Пр2 Безруков С.В. 2 Пр3 Домогаров А.Ю. 2 Пр3 Боярская Е.М. 2 Пр3 Безруков С.В. 2 СОТРУД-ВСЕ-ПРОЕКТЫ сотр_имя отд_номер Домогаров А.Ю. 2 Безруков С.В. 2 2.3.2. Реляционное исчисление Здесь мы поясним основной принцип, лежащий в основе реляционного исчисления. Более подробно с реализациями этого 44 подхода к работе с реляционными отношениями можно ознако- миться в работах [1–3]. Как уже было сказано, в реляционной модели определяются два базовых механизма манипулирования данными: основанная на теории множеств реляционная алгебра (ал- гебра Кодда), основанное на математической логике реляционное исчисление. Так же, как и выражения реляционной алгебры, формулы ре- ляционного исчисления определяются над отношениями реля- ционных баз данных, и результатом вычисления также является отношение. Эти механизмы манипулирования данными разли- чаются уровнем процедурности: запрос, представленный на языке реляционной алгебры, может быть вычислен на основе вычисления элементарных алгебраических операций с учетом их старшинства и возможных скобок; формула реляционного исчисления только формулирует (декларирует) условия, которым должны удовлетворять кортежи результирующего отношения. Поэтому языки реляционного исчисления являются более непроцедурными или декларативными. Пример. Пусть даны два отношения: СОТРУДНИКИ {сотр_номер, сотр_имя, сотр_зарпл, отд_номер}, ОТДЕЛЫ{отд_номер, отд_кол, отд_нач}. Здесь атрибут отд_кол означает количество сотрудников в отделе, а отд_нач – фамилию начальника отдела. Мы хотим узнать имена и номера сотрудников, являющихся начальниками отделов с количеством работников более 10. Выполнение этого запроса средствами реляционной алгебры распадается на четко определенную последовательность шагов: 1. Выполнить соединение отношений СОТРУДНИКИ и ОТДЕЛЫ по условию сотр_номер = отдел_нач: С1 = СОТРУДНИКИ JOIN ОТДЕЛЫ WHERE сотр_номер = отд_нач. 45 2. Из полученного отношения произвести выборку по условию отд_кол > 10: С2 = С1 WHERE отд_кол > 10 3. Спроецировать результаты предыдущей операции на атрибуты сотр_имя, сотр_номер: С3 = С2 [сотр_имя, сотр_номер]. Заметим, что порядок выполнения шагов может повлиять на эффективность выполнения запроса. Так, время выполнения приведенного выше запроса можно сократить, если поменять местами этапы 1 и 2. В этом случае сначала из отношения СОТРУДНИКИ будет сделана выборка всех кортежей со значе- нием атрибута отдел_кол > 10, а затем выполнено соединение результирующего отношения с отношением ОТДЕЛЫ. Машин- ное время экономится за счет того, что в операции соединения участвуют меньшие отношения. На языке реляционного исчисления данный запрос может быть записан как: Выдать сотр_имя и сотр_ном для СОТРУДНИКИ таких, что существует ОТДЕЛ с таким же, что и сотр_ном значением отд_нач и значением отд_кол большим 10. Здесь мы указываем лишь характеристики результирующего отношения, но не говорим о способе его формирования. СУБД сама должна решить, какие операции и в каком порядке надо выполнить над отношениями СОТРУДНИКИ и ОТДЕЛЫ. Задача оптимизации выполнения запроса в этом случае также ложится на СУБД. Download 1.32 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling