
- •Курсовой проект на тему
- •Дисциплина
- •Введение
- •1. Постановка задачи
- •1.1 Описание предметной области
- •1.2 Функциональные требования
- •2.Физическая модель
- •2.1. Фрагмент бд "Учет водоисточников"
- •2.2. Фрагмент бд "Учет неисправностей"
- •2.3. Фрагмент бд "Учет отправленных писем"
- •2.4.Используемая субд
- •3.Обеспечение целостности бд
- •4. Создание таблиц и ограничений.
- •5.Хранимые процедуры
- •6. Выходные формы
- •7. Обеспечение безопасности
- •8. Оптимизация
- •9. Тестирование
- •Заключение
- •Библиографический список
- •Приложение 6 – создание ограничений на таблицы
- •Приложение 7 –процедуры добавления
- •Приложение 8 – процедуры обновления
- •Приложение 9 – процедуры удаления
- •Приложение 10 – триггеры
- •Приложение 11 – отчетные формы
- •Приложение 12 – безопасность Роли
- •Праванароли
- •Пользователи
- •Добавлениепользователейкролям
- •Приложение 13 – оптимизация
- •Приложение 14 – тестирование
6. Выходные формы
В рамках данного курсового проекта организация данных в виде БД преимущественно была необходима для того, чтобы из БД можно было оперативно получить статистические данные, отчетные формы и другую необходимую и полезную для работы информацию.
Для получения конечных отчетных форм были использованы:
Отчетные хранимые процедуры
Отчетные хранимые функции
В рамках данного курсового проекта были реализованы следующие хранимые процедуры и функции (приложение 11):
PlanProverki – функция, возвращающая гидранты и водоемы подлежащие проверке в заданный день.
PPlanProverki – процедура, которая выводит данные, полученные вышеуказанной процедурой
LetterToOrganization – функция, возвращающая данные, необходимые для отправки письма в обслуживающую организацию.
PLetterToOrganization - процедура, которая выводит данные, полученные вышеуказанной процедурой
LetterToGPN - функция, возвращающая данные, необходимые для отправки письма в ГосПожНадзор.
PLetterToGosPN - процедура, которая выводит данные, полученные вышеуказанной процедурой
PWSFind – процедура, выводящая личную карточку водоисточника
Пример отчета, о гидрантах и водоемах, подлежащих проверке в заданный день.
В качестве входных параметров подаем дату проверки, для которой будет выводиться отчет. Далее, используя этотпараметр, получаем данные о всех водоисточниках, подлежащих проверке.
CREATE FUNCTION PlanProverki (@DAT DATE)
RETURNS @Result TABLE (
NameWaterSource VARCHAR (10),
NameStreet VARCHAR(40),
Building VARCHAR(10),
NameDefect VARCHAR(100),
RepairTime INT,
DateInspection DATE)
AS
BEGIN
declare @IDDP TABLE (
IDWaterSource INT,
DateP DATE)
INSERT INTO @IDDP
SELECT
WS.IDWaterSource,
MAX(DateInspection) [DP]
FROM WaterSource WS INNER JOIN Street S
ON WS.IDStreet=S.IDStreet
INNER JOIN Inspection I
ON WS.IDWaterSource=I.IDWaterSource
INNER JOIN TestDefect TD
ON TD.IDInspection=I.IDInspection
INNER JOIN Defect D
ON D.IDDefect=TD.IDDefect
GROUP BY
WS.IDWaterSource
INSERT INTO @Result
SELECT
WS.NameWaterSource [Название],
S.NameStreet [Улица],
WS.Building [Дом],
D.NameDefect [Неисправность],
D.RepairTime [Время на устранение],
I.DateInspection [Датапроверки]
FROM WaterSource WS INNER JOIN Street S
ON WS.IDStreet=S.IDStreet
INNER JOIN Inspection I
ON WS.IDWaterSource=I.IDWaterSource
INNER JOIN TestDefect TD
ON TD.IDInspection=I.IDInspection
INNER JOIN Defect D
ON D.IDDefect=TD.IDDefect
INNER JOIN @IDDP IDDP
ON IDDP.IDWaterSource=WS.IDWaterSource
WHERE ((IDDP.DateP=I.DateInspection) AND (D.NameDefect='исправен') AND (DATEADD(dd,30,IDDP.DateP)<=@DAT))
INSERT INTO @Result
SELECT
WS.NameWaterSource [Название],
S.NameStreet [Улица],
WS.Building [Дом],
D.NameDefect [Неисправность],
D.RepairTime [Время на устранение],
I.DateInspection [Датапроверки]
FROM WaterSource WS INNER JOIN Street S
ON WS.IDStreet=S.IDStreet
INNER JOIN Inspection I
ON WS.IDWaterSource=I.IDWaterSource
INNER JOIN TestDefect TD
ON TD.IDInspection=I.IDInspection
INNER JOIN Defect D
ON D.IDDefect=TD.IDDefect
INNER JOIN @IDDP IDDP
ON IDDP.IDWaterSource=WS.IDWaterSource
INNER JOIN Letter L
ON L.IDLetter=TD.IDLetter
WHERE ((IDDP.DateP=I.DateInspection) AND (D.NameDefect!='исправен') AND (L.DateNextInspection<=@DAT))
RETURN;
END
Процедура, которая отображает данные, полученные функцией.
CREATE PROC PPlanProverki(@Dat DATE)
AS
SELECT
NameWaterSource [Название],
NameStreet [Улица],
Building [Дом],
NameDefect [Неисправность],
RepairTime [Время на устранение],
DateInspection [Дата предыдущей проверки]
FROM PlanProverki(@Dat)
EXEC PPlanProverki '21-01-2012'