
- •«Курский государственный университет»
- •Курсовая работа
- •1. Техническое задание 2
- •2. Модель предметной области в виде системы функциональных зависимостей 12
- •5. Построение запросов на языке sql 32
- •1.1.2. Объекты предметной области
- •1.1.3. Процессы взаимодействия между объектами, происходящие в предметной области
- •Формализованное описание предметной области
- •1.2.1. Словарь терминов для объектов и элементов данных
- •1.2.2. Первичные и альтернативные ключи
- •2.1.2. Не ключевые функциональные зависимости
- •2.1.3. Функциональные зависимости для сохранения иерархии
- •2.1.4.Функциональные зависимости для устранения потери информации при соединении
- •2.1.5. Исходное множество функциональных зависимостей
- •Неизбыточное редуцированное покрытие системы функциональных зависимостей
- •Построение неизбытычного покрытия
- •3.2. Построениелеворедуцированногопокрытия
- •3.3. Построениеправоредуцированногопокрытия
- •Минимальное кольцевое редуцированное покрытие системы функциональных зависимостей
- •4.1 Естественноехарактеристическоемножество:
- •5.1.1. Выражение для запроса с использованием операций реляционной алгебры
- •5.1.3. Исходный запрос на языке sql
- •5.1.4. Временные характеристики исходного запроса
- •5.1.5. Оптимизированное операционное дерево для запроса
- •5.1.6. Оптимизированный запрос на языке sql
- •5.1.7. Временные характеристики оптимизированного запроса
- •5.2. Многотабличный запрос на выборку по условию нескольких строк и логической формулы условий столбцов с использованием "or"
- •5.2.1. Выражение для запроса с использованием операций реляционной алгебры
- •5.2.2. Исходное операционное дерево для запроса
- •5.2.3. Исходный запрос на языке sql
- •Приложение 1
5.1.3. Исходный запрос на языке sql
Текст исходного запроса на SQL представлен на рисунке 5.5.
SELECT ARRIVAL_OBJ.code_object, ARRIVAL_OBJ.price, INVENTAR.naimenovanie, POMESHENIE.num_p, POMESHENIE.square
FROM POMESHENIE INNER JOIN (ZAL
INNER JOIN (((ARRIVAL_OBJ
INNER JOIN INVENTAR ON
ARRIVAL_OBJ.code_object = INVENTAR.code_object)
INNER JOIN INVNUM_INV ON
(ARRIVAL_OBJ.code_object = INVNUM_INV.code_object) AND
(INVENTAR.code_object = INVNUM_INV.code_object))
INNER JOIN INV_IN_ZAL ON
INVNUM_INV.inv_number = INV_IN_ZAL.inv_number) ON
ZAL.num_p = INV_IN_ZAL.num_p) ON
(INV_IN_ZAL.num_p = POMESHENIE.num_p) AND (POMESHENIE.num_p = ZAL.num_p)
WHERE
(((ARRIVAL_OBJ.price)>92000) AND
((POMESHENIE.square)<47) AND
((INVENTAR.firm)="МосковскийСпортИнвентарь"));
Рисунок 5.5
5.1.4. Временные характеристики исходного запроса
Для оценки стоимости выполнения операций реляционной алгебры используются следующие обозначения:
T(R) – количество строк в таблице R;
V(R,a) – количество разных значений в столбце a в таблице R.
В таблице 5.2 представлена статистика для оценки временных характеристик запроса.
Таблица 5.2
Таблица ARRIVAL_OBJ |
Таблица INVENTAR |
Таблица INVNUM_INV |
T(OBJ) = 125155 |
T(INV) = 41690 |
T(INV_NUM) = 41690 |
V(OBJ,код) = 125155 |
V(INV,код) = 41690 |
V(INV_NUM, код) = 41690 |
|
|
V(INV_NUM, инв. номер) = 41690 |
Таблица INV_IN_ZAL |
Таблица ZAL |
Таблица POMESHENIE |
T(INV_ZAL) = 41690 |
T(ZAL) = 50 |
T(POM) = 50 |
V(INV_ZAL, инв. номер) = 41690 |
V(ZAL, номер помещения) = 50 |
V(POMESHENIE, номер помещения) = 50 |
V(INV_ZAL, номер помещения) = 50 |
|
|
Для расчета временных характеристик исходного запроса используется исходное операционное дерево, изображенное на рисунке 5.4. Расчет стоимости выполнения операции реляционной алгебры в узле (1) происходит по следующей формуле:
.
,
,
где
- число блоков, записанных в таблице
;
- длина одной записи
таблицы
в блоках;
- длина одной записи
таблицы
в байтах;
-
размер одного блока.
Расчет стоимости выполнения операции реляционной алгебры в узле (2) происходит по формуле:
.
Расчет стоимости выполнения операции реляционной алгебры в узле (3) происходит по формуле:
.
Расчет стоимости выполнения операции реляционной алгебры в узле (4) происходит по формуле:
.
Расчет стоимости выполнения операции реляционной алгебры в узле (5) происходит по формуле:
.
Расчет
стоимости выполнения операции реляционной
алгебры в узле (6) где
- операция селекции с логической формулой
.
Формула имеетвид:
(((ARRIVAL_OBJ.price)>92000) AND
((POMESHENIE.square)<47) AND
((INVENTAR.firm)="МосковскийСпортИнвентарь"));
V(q5, INVENTAR.firm)="Московский СпортИнвентарь"
.
Так как операция селекции не изменяет структуру таблицы, то
,
.
Так как операция проекции располагается последней, то ее не учитывают при расчете сложности запроса.
Окончательно имеем:
.