Исходная концептуальная модель базы данных представлена на рисунке 2.15.
Рисунок 2.15 - Концептуальная модель (ER-диаграмма) базы данных
После проведения всех этапов минимизации концептуальная модель не изменилась.
2.6 Построение запросов
2.6.1 Построение первого запроса
2.6.1.1 Исходный запрос
Первый запрос формулируется следующим образом: «Вывести коды партий футбольных ворот типа «юниорские», которые производятся фирмой Star, относятся к модели K325, поступили не раньше 2007 года и находятся в спортивных залах «Общей физической подготовки»».
Текст первого запроса на языке SQL представлен на рисунке 2.16.
Риунок 2.16 - Текст первого запроса на языке SQL
Исходное операционное дерево для первого запроса представлено на рисунке 2.17.
Рисунок 2.17 - Исходное операционное дерево для первого запроса
Оценка стоимости исходного запроса представлена на рисунке 2.18.
Рисунок 2.18 – Оценка стоимости исходного запроса
2.6.1.2 Минимизированный запрос
Текст минимизированного первого запроса на SQL представлен на рисунке 2.19.
SELECT code_obj from gate WHERE gate.kind="Стандартные" |
INTO CURSOR C1 |
SELECT code_obj FROM inventar WHERE |
(ALLTRIM(inventar.firm)="Mizuno" AND |
ALLTRIM(inventar.model)="K235") INTO CURSOR C2 |
SELECT code_obj from arrival_object WHERE |
((arrival_object.date)>={^2007-01-01}) INTO CURSOR d5 |
SELECT * FROM c1 INNER JOIN c2 ON c1.code_obj=c2.code_obj |
INTO CURSOR C3 |
SELECT * FROM c3 INNER JOIN d5 ON d5.code_obj=c3.code_obj_a |
INTO CURSOR C6 |
SELECT code_obj_a,inv_number from invnum_inv INNER JOIN C6 |
ON ALLTRIM(code_obj_a)==ALLTRIM(invnum_inv.code_obj) |
INTO CURSOR C7 |
SELECT code_obj_a,num_p from inv_in_zal INNER JOIN C7 ON inv_in_zal.inv_number=c7.inv_number INTO CURSOR C9 |
SELECT num_p from zal WHERE |
ALLTRIM(zal.type_zal)="Общей физической подготовки" |
INTO CURSOR C10 |
SELECT DISTINCT code_obj_a from C9 INNER JOIN C10 |
ON C9.num_p=C10.num_p |
Рисунок 2.19 – Текст минимизированного первого запроса
Минимизированное операционное дерево для первого запроса представлено на рисунке 2.20.
|
Рисунок 2.20 - Операционное дерево для минимизированного первого запроса
Оценка стоимости минимизированного запроса представлена на рисунке 2.21.
Рисунок 2.21- Оценка стоимости минимизированного первого запроса
2.6.2 Построение второго запроса
Словесная формулировка запроса следующая: «Вывести номера спортивных залов, в которых хранится инвентарь, принадлежащий обеим партиям: 522715, 413998».
Текст запроса на языке SQL представлен на рисунке 2.22.
SELECT num_p FROM zal WHERE ALLTRIM(zal.type_zal)='' |
INTO CURSOR CR1 |
SELECT num_p,code_del FROM del,CR1 INTO CURSOR CR4 |
SELECT CR1.num_p,inv_number FROM CR1 INNER JOIN inv_in_zal |
ON CR1.num_p==inv_in_zal.num_p INTO CURSOR CR2 |
SELECT num_p,code_obj FROM CR2 INNER JOIN invnum_inv |
ON (invnum_inv.inv_number==CR2.inv_number) DISTINCT |
INTO CURSOR CR3 |
SELECT DISTINCT num_p from CR4 WHERE NOT EXISTS |
(SELECT CR3.num_p FROM CR3 WHERE (CR4.num_p==CR3.num_p |
AND CR4.code_del==CR3.code_obj))into CURSOR CR5 |
SELECT CR1.num_p,CR5.num_p FROM CR1 LEFT JOIN CR5 ON |
CR1.num_p=CR5.num_p INTO CURSOR CR6 |
SELECT DISTINCT num_p FROM CR1 WHERE NOT EXISTS (Select CR6.num_p_b from CR6 WHERE CR1.num_p=CR6.num_p_b) |
Рисунок 2.22 - Текст запроса на языке SQL
Операционное дерево для второго запроса представлено на рисунке 2.23.
Рисунок 2.23 - Операционное дерево для второго запроса
3 Рабочий проект
3.1 Структура проекта
3.1.1 Связь таблиц
Схема связей таблиц представлена на рисунке 3.1
Рисунок 3.1– Схема связей таблиц
3.1.2 Перечень форм
Формы, входящие в состав проекта приведенны в таблице 3.1.
Таблица 3.1 – Перечень форм
Название формы | Окружение данных |
Инвентарные номера спортивного инвентаря | Invnum_inv, Inventar |
Спортивный инвентарь | Inventar |
Универсальный запрос | Arrival_object,Gate, Inventar,Invnum_inv |
Запросы | - |
3.2 Описание формы
На рисунке 3.2. изображена форма «Инвентарные номера инвентаря»
Command
|
|
Рисунок 3.2 – Форма «Инвентарные номера инвентаря»
При создании формы использовались компоненты: TextBox, Command, Grid Каждая кнопка Command имеет событие Сlick. Обработчики событий Click для кнопок представлены в Приложении А.
Заключение
В ходе выполнения курсовой работы была достигнута цель работы – проектирование базы данных хозяйственного учета футбольного клуба.
Для достижения цели был решен ряд задач: составление описания предметной области; составление словаря понятий и терминов; построение исходной модели (ER-диаграммы) базы данных; определение функциональных зависимостей; синтез схемы базы данных на основании функциональных зависимостей; построение оптимизированной концептуальной модели; построение запросов на выборку.