
- •База данных системы управления проектами
- •1. Постановка задачи
- •2. Описание бд
- •2.1 Таблицы
- •2.2 Функции
- •2.3 Хранимые процедуры
- •2.4 Триггеры
- •2.6 Действия по расписанию
- •2.7 Пользователи и роли
- •Заключение
- •Приложение 1 диаграмма базы данных
- •Приложение 2 файл Functions.Sql
- •Приложение 3 файл Tables.Sql
- •Приложение 4 файл Triggers.Sql
- •Приложение 5 файл Procedures.Sql
- •Приложение 6 файл Reports.Sql
- •Приложение 7 файл Jobs.Sql
- •Приложение 8 файл Permissions.Sql
- •Приложение 9 файл FillData.Sql
- •Приложение 10 файл TestData.Sql
- •Приложение 11 файл Drop.Sql
2.4 Триггеры
В базе данных создано 10 триггеров, 8 из которых отвечают за поддержание ссылочной и логической целостности базы данных:
UserSysUserTrigger – триггер, проверяющий корректность связи пользователя User предметной области с системным пользователем MS SQL. При попытке вставить или обновить неверное значение поля SysUserId таблицы User, вызывает ошибку.
FileDeleteTrigger – триггер, отвечающий за удаление данных из таблиц (ProjectFile, TaskFile, CommentFile), которые ссылаются внешним ключем на таблицу File, но не могут объявить правило ON DELETE CASCADE для такого ключа из-за появления циклов в графе вызова триггеров.
UserDeleteTrigger – триггер, отвечающий за удаление данных из таблиц (ProjectUser, TaskAuditor, Comment), которые ссылаются внешним ключем на таблицу User, а также за обновление полей CreatorId и PerformerId в таблице Task.
ProjectDeleteTrigger – триггер, отвечающий за удаление подпроектов в таблице Project при удалении родительского проекта.
TaskDeleteTrigger – триггер, отвечающий за удаление подзадач в таблице Task при удалении родительской задачи.
ComponentDeleteTrigger – триггер, отвечающий за удаление подкомпонентов в таблице Component при удалении родительского компонента, а также задач таблицы Task, связанных с этим компонентом.
StateDeleteTrigger – триггер, отвечающий за обработку удаления состояния из жизненного цикла категории. При удалении состояния, все переходы, ведущие в удаляемое состояние, переопределяются на ведущие в те состояния, которые являлись конечными для переходов из удаляемого состояния.
MilestoneDeleteTrigger – триггер, отвечающий за очищение поля MilestoneId задач таблицы Task, связанных с этой вехой.
Оставшиеся два триггера используются для обновления даты модификации проектов таблицы Project и задач таблицы Task:
ProjectUpdateTrigger – триггер, обновляющий поле ModifyDate таблицы Project текущей датой при обновлении проекта.
TaskUpdateTrigger – триггер, обновляющий пол ModifyDate таблицы Task текущей датой при обновлении задания.
2.5 ОТЧЁТЫ
Отчёты – это набор хранимых процедур, позволяющих просматривать статистическую информацию о записях базы данных. Всего было реализовано 4 процедуры генерации отчетов.
UserReport – процедура, выводящая статистику по пользователям с разбиением по проектам. Также возможно ограничить вывод только одним пользователем, пользователями одной должности, либо одним проектом. Отчет содержит следующие колонки: Полное имя пользователя | Должность | Проект | Затрачено часов | Всего задач | Открытых задач | Просроченных задач | Созданных задач | Комментарив | Наблюдаемых задач [User], [Position], [Project], [Spent hours], [Total tasks], [Opened tasks], [Expired tasks], [Created tasks], [Comments], [Audited tasks] Входные параметры: @UserId INT, @PositionId INT, @ProjectId INT
ProjectReport – процедура, выводящая статистику по проектам. Также можно ограничить вывод только одним проектом. Отчет содержит следующие колонки: Проект | Затрачено часов | Оценено часов | Прогресс | Всего задач | Открытых задач | Просроченных задач | Пользователей | Комментариев | Файлов [Project], [Spent hours], [Estimate hours], [Progress], [Total tasks], [Opened tasks], [Expired tasks], [Users], [Comments], [Files] Входные параметры: @ProjectId INT
TasksByState – процедура, выводящая статистику распределения задач по состояниям с разбиением по категориям. Можно ограничить вывод одним состоянием, либо одной категорией состояний. Отчет содержит следующие колонки: Категория | Состояние | Проект | Задачи ([Category] | [State] | [Project] | [Tasks]) Входные параметры: @StateId INT, @CategoryId INT
TasksByMilestone – процедура, выводящая статистику распределения задач по вехам с разбиением по проектам. Можно ограничить вывод вехой или проектом. Отчет содержит следующие колонки: Проект | Веха | Срок | Задачи ([Project], [Milestone], [Due], [Tasks]) Входные параметры: @MilestoneId INT, @ProjectId INT