
- •Липецкий государственный технический университет
- •Задание кафедры
- •Содержание
- •Введение
- •Основная часть
- •1 Техническое задание
- •1.1 Описание предметной области
- •1.2 Модель вариантов использования
- •2 Технический (эскизный) проект
- •2.2.3 Спецификация связей
- •2.3 Физическая модель базы данных
- •2.3.1 Диаграмма физической модели
- •2.3.2 Спецификация таблиц
- •2.4 Основные запросы к базе данных
- •2.4.1 Формулировка на естественном языке
- •2.4.2 Формулировка в виде выражения реляционной алгебры
- •2.5 Хранимые процедуры
- •3 Рабочий проект
- •3.4.4 Вызов и загрузка
- •3.4.5. Описание работы с программой
- •3.4.6. Данные
- •3.4.7 Сообщения
- •Заключение
- •Список источников
- •Приложение 1. Sql-скрипт создания бд
- •Приложение 2. Текст программы
- •Приложение 3. Графическая часть
2.4 Основные запросы к базе данных
2.4.1 Формулировка на естественном языке
2.4.1.1 Оплаченные проекты фирмы.
Из таблицы «Zakaz» выбрать записи, в которых поле «date_pay» не равно NULL и поле «cost» больше cost_value.
2.4.1.2 Список разработчиков
Выбрать из таблицы «Worker» поле «worker_fio».
2.4.1.3 Проекты на хостинге
Из таблицы «Zakaz» выбрать все записи, если для текущего заказа есть ссылка на execution, в которой есть ссылка на hosting.
2.4.1.4 Поставить скидку.
В таблице «Zakaz» для всех полей, «client_id» которых встречается более N раз, «discount» которых меньше D, установить «discount» = newDiscount.
2.4.2 Формулировка в виде выражения реляционной алгебры
2.4.2.1 Оплаченные проекты фирмы
,
где D – отношение "Zakaz" («zakaz_id», «date_add», «date_pay», «cost», «discount», «advance», «design», «type», «fill»).
2.4.2.2 Список разработчиков
,
где W– отношение "Worker" («worker_id», «worker_fio»).
2.4.3 Формулировка в виде выражения реляционного исчисления с переменными-кортежами
2.4.3.1 Оплаченные проекты фирмы
Результатом запроса, является отношение S:
где D – отношение "Zakaz" («zakaz_id», «date_add», «date_pay», «cost», «discount», «advance», «design», «type», «fill»).
2.4.3.2 Список разработчиков
Результатом запроса является отношение R:
где W– отношение "Worker" («worker_id», «worker_fio»).
2.4.4 Формулировка на языке SQL
2.4.4.1 Оплаченные проекты фирмы.
SELECT * FROM “Zakaz”
WHERE “date_pay” IS NOT NULL AND “cost” > ‘cost_value’
2.4.4.2 Список разработчиков
SELECT * FROM “Worker”
2.4.4.3 Проекты на хостинге
SELECT Z.*, H.* FROM “Zakaz” Z INNER JOIN “Execution” E
ON Z.”zakaz_id” = E.”zakaz_id” INNER JOIN “Hosting” H
ON E.”execution_id” = H.”execution_id”
2.4.4.4 Поставить скидку.
SELECT E."maket_link", CASE WHEN H."url" IS NULL THEN '-'
ELSE H."url" END AS "url", T."type_name", Z."cost"
FROM "Zakaz" Z INNER JOIN SELECT *
FROM "Execution" E1 WHERE E1."date_end" =
(SELECT MAX(E2."date_end") FROM "Execution" E2
WHERE E2."zakaz_id" = E1."zakaz_id")) E
ON E."zakaz_id" = Z."zakaz_id"
INNER JOIN "Type" T ON T."type_id" = Z."type_id"
LEFT JOIN "Hosting" H ON H."EXECUTION_ID" = E."execution_id" AND H."date_end_support" > SYSDATE
WHERE Z."date_pay" IS NOT NULL
AND Z."cost" > 'numericUpDown1.Value'
ORDER BY Z."zakaz_id" ASC, E."date_end" DESC"
2.5 Хранимые процедуры
2.5.1 Блок-схема алгоритма
2.5.1.1 Хранимая процедура удаления клиентов
2.5.1.2 Хранимая процедура изменения скидки
2.5.2 Код на языке PL/SQL
2.5.2.1 Хранимая процедура удаления клиентов
create or replace procedure deleteclient as
begin
DELETE FROM "Client" WHERE "Client"."client_id" NOT IN (SELECT Z."client_id" FROM "Zakaz" Z GROUP BY Z."client_id" HAVING COUNT(*) > 0);
end deleteclient;
2.5.2.2 Хранимая процедура изменения скидки
create or replace procedure upddisc
(
param1 in number
, param2 in number
, param3 in number
) as
begin
UPDATE "Zakaz" SET "discount" = param1
WHERE "client_id" IN
(SELECT Z."client_id" FROM "Zakaz" Z GROUP BY Z."client_id" HAVING COUNT(*) > param2)
AND ("discount" IS NULL OR "discount" < param3)
AND "date_pay" IS NULL;
end upddisc;
2.6 Архитектура информационной системы
В данной информационной системе основное приложение для работников ресторана написано с использованием платформы .NET Framework.
Приложение оперирует с базой данных посредством объектно-реляционная система управления базами данных Oracle 11g Express Edition.
В программе основным является класс Form1. Данный класс реализует пользовательский интерфейс приложения, а также все функциональные возможности программы.
Основные действия в программе выполняются обработчиками пользовательских элементов управления формы Form1 и методами класса формы Form1.
Методы класса Form1:
public Form1() – конструктор класса Form1.
private void button1_Click () – вывод проектов на вкладке «Проекты» пр нажатии на соответствующую кнопку.
private void Form1_Load() – загрузка всех таблиц из базы данных.