Декомпозиция запросов

Назначение декомпозиции запросов состоит в преобразовании запросов на языке высокого уровня в выражения реляционной алгебры, с последующей проверкой его синтаксической и семантической корректности. Обычно декомпозиция включает в себя стадии анализа, нормализации, семантического анализа, упрощения и реструктурирования запроса.

Анализ.

На этой стадии выполняется лексический и синтаксический анализ запросов с использованием методов, применяемых в компиляторах языков высокого уровня (Ахо и Ульман). Уточняется присутствуют ли в системном каталоге определения для указанных в запросе отношений и атрибутов. Кроме того контролируется могут ли затребованные операции над различными операторами БД быть применимыми к объектам соответствующего типа.

После завершения данной стадии декомпозиции запрос на языке высокого уровня преобразуется к некоторому внутреннему представлению, более удобному для последующей обработки. Как правило, для внутреннего представления запроса вбирается та или иная форма дерева запроса. Дерево запроса конструируется следующим образом:

1. Листовые узлы задаются для каждого используемого в запросе базового отношения.

2. Нелистовые узлы задаются для каждого промежуточного отношения, создаваемого в результате выполнения некоторой операции реляционной алгебры.

3. Корень дерева представляет результирующий набор данных запроса.

4. Запросы выполняются от листовых узлов к корню дерева.

Пример реализации запроса в РА. Определить Ф.И.О. студентов и группы, в которых они учатся, имеющих задолженности по курсу «Базы данных».

Выполним запрос в несколько этапов:

1.Определим коды предметов, имеющих наименование «Базы данных».

.

2.Найдем ведомости по этим предметам.

3.Найдем результаты экзамена в этих ведомостях.

4.Определим результаты, соответствующие задолженностям.

5.Определим, имеющих эти результаты.

6.Окончательный результат.

 
 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: