- •Введение
- •Глава 2 посвящена вопросам разработки технического задания, процессу проектирования и построения системы. Рассматриваются вопросы:
- •Глава 3 описывает методику тестирования разработанного приложения, вопросы эксплуатации, этап разработки программной документации.
- •Глава 1. Анализ задачи построения системы электронного учета вакансий на предприятии оао Белзан
- •1.1 Вакансии на предприятии
- •1.2 Требования, предъявляемые к системе Vakansia
- •1.3 Определение класса решаемой задачи
- •1.4 Определение критериев выбора средств и методов решения задач
- •1.5 Технология построения windows-приложений на базе технологии Windows Forms .Net
- •1.6 Механизм взаимодействия с базой данных
- •1.7 Разработка технического задания
- •Глава 2 Проектирование и разработка программы Vakansia
- •2.1 Анализ исходных данных. Разработка требований.
- •2.2 Архитектура приложения.
- •2.3 Информационное обеспечение
- •2.4 Математическое обеспечение
- •2.4.1 Алгоритмическое обеспечение проекта
- •2.4.1.1 Логическая структура базы данных
- •2.4.1.2 Физическая модель данных
- •2.4.1.3 Схема данных
- •2.4.1.4 Хранимые процедуры
- •2.4.1.5 Sql запросы
- •2.4.2 Программное обеспечение проекта
- •2.4.2.1 Структура windows-приложения
- •2.4.2.2 Описание основных модулей приложения
- •Глава 3. Реализация и тестирование
- •3.1 Дистрибутив приложения. Развертывание
- •3.2 Реализация тестирования
- •Заключение
- •Список литературы
- •Приложение а (обязательное) Техническое задание
- •Приложение б (обязательное) Описание программы
- •Приложение b (обязательное) Программа и методика испытаний
- •Приложение г (обязательное) Руководство пользователя
- •Приложение д
- •Приложение ж Презентационный материал
2.4.1.4 Хранимые процедуры
Программное обеспечение Vakansia использует хранимые процедуры.
Хранимая процедура является набором инструкций, хранящимся на стороне СУБД. Набор инструкций обычно пишется в виде последовательности SQL-команд.
Использование хранимых процедур имеет следующие преимущества:
производительность. При создании текст процедуры оптимизируется и хранится в БД в откомпилированном виде. В таком виде процедура выполняется гораздо быстрее, чем в случае динамического компилирования каждого составляющего ее запроса. Выполняются ХП сервером, а не клиентом, что позволяет сократить сетевой трафик;
модульное проектирование. Использование хранимых процедур часто позволяет значительно сократить объём кода клиентского приложения. Приложения, получающие доступ к одной и той же БД, могут совместно использовать одни и те же процедуры, и не нужно снова программировать одни и те же действия, благодаря чему уменьшается риск программных ошибок в клиентских приложениях и экономится время программиста;
локализация изменений. Если процедура модифицируется, то все внесенные изменения автоматически отражаются во всех приложениях, использующих процедуру, обеспечивая их согласованность;
защита. В большинстве СУБД хранимые процедуры считаются защищаемыми объектами и им назначаются отдельные привилегии.
простота доступа. В больших БД набор ХП может стать для прикладных программ основным средством доступа к БД. Часто вызов стандартной процедуры более понятен, чем выполнение последовательности SQL-команд (запросов);
реализация деловой логики. Возможности условной обработки, предоставляемые ХП, часто используются для реализации бизнес-логики в БД. В хранимых процедурах можно реализовывать сложные алгоритмы обработки данных внутри базы, причем во многих случаях использование хранимых процедур позволяет чётко отделять алгоритмы логики программы от алгоритмов обработки данных.
Одной из наиболее сложных хранимых процедур в Vakansia является процедура TRUD_ALL (пример 8). Эта процедура использует курсор для предоставление предыдущего места работы в строковом виде.
Листинг 2.1 – Процедура TRUD_ALL
create or alter procedure TRUD_ALL ( COD integer)
returns ( NAME varchar(10000))
as
declare variable IORAZALL varchar(10000);
declare variable IORAZ varchar(1000);
begin
iorazall='';
for select case when cast(date1 as varchar(10)) is null then '' else
case when EXTRACT(day from date1)<10 then '0'||EXTRACT(day from date1) else EXTRACT(day from date1) end ||'.'|| case when EXTRACT(month from date1)<10 then '0'||EXTRACT(month from date1) else EXTRACT(month from date1) end ||'.'||EXTRACT(year from date1) end ||' - '|| case when cast(date2 as varchar(10)) is null then '' else case when EXTRACT(day from date2)<10 then '0'||EXTRACT(day from date2) else EXTRACT(day from date2) end ||'.'||case when EXTRACT(month from date2)<10 then '0'||EXTRACT(month from date2) else EXTRACT(month from date2) end ||'.'||EXTRACT(year from date2) end||' '|| COALESCE(name||', ','')|| COALESCE(Podr||', ','')|| COALESCE(prof||', ','')|| COALESCE('выполняемые обязанности: '||obaz||', ','')|| COALESCE('причина увольнения: '||prichina,'')
from trud where code_anket=:cod
into ioraz
do
iorazall=iorazall||ioraz||'; ';
name=iorazall;
suspend;
end
Список хранимых процедур с кратким описанием размещен в таблице 2.21.
Таблица 2.21 – Список хранимых процедур
Название |
Описание |
BLACK_FULL |
Это простая хранимая процедура, которая выводит причину занесения кандидата в черный список. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение |
DETI_ALL |
Это простая хранимая процедура, которая выводит информацию о детях. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение |
OBRAZ_NAME |
Это простая хранимая процедура, которая информацию об образование кандидата. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение |
SUD_ANKET |
Это простая хранимая процедура, которая выводит информацию о судимостях кандидата Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение |
TRUD_ALL |
Это простая хранимая процедура, которая выводит информацию о трудовой деятельности кандидата. Параметр ввода регистрационный номер анкеты кандидата, возвращает строковое значение |
TESTER |
Эта хранимая процедура проводит подсчет правильных ответов при тестировании. Параметр ввода регистрационный номер анкеты кандидата, возвращает идентификатор результата |