Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
smetanin_db_coursework.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
338.14 Кб
Скачать

2.4 Триггеры

В базе данных создано 10 триггеров, 8 из которых отвечают за поддержание ссылочной и логической целостности базы данных:

  1. UserSysUserTrigger – триггер, проверяющий корректность связи пользователя User предметной области с системным пользователем MS SQL. При попытке вставить или обновить неверное значение поля SysUserId таблицы User, вызывает ошибку.

  2. FileDeleteTrigger – триггер, отвечающий за удаление данных из таблиц (ProjectFile, TaskFile, CommentFile), которые ссылаются внешним ключем на таблицу File, но не могут объявить правило ON DELETE CASCADE для такого ключа из-за появления циклов в графе вызова триггеров.

  3. UserDeleteTrigger – триггер, отвечающий за удаление данных из таблиц (ProjectUser, TaskAuditor, Comment), которые ссылаются внешним ключем на таблицу User, а также за обновление полей CreatorId и PerformerId в таблице Task.

  4. ProjectDeleteTrigger – триггер, отвечающий за удаление подпроектов в таблице Project при удалении родительского проекта.

  5. TaskDeleteTrigger – триггер, отвечающий за удаление подзадач в таблице Task при удалении родительской задачи.

  6. ComponentDeleteTrigger – триггер, отвечающий за удаление подкомпонентов в таблице Component при удалении родительского компонента, а также задач таблицы Task, связанных с этим компонентом.

  7. StateDeleteTrigger – триггер, отвечающий за обработку удаления состояния из жизненного цикла категории. При удалении состояния, все переходы, ведущие в удаляемое состояние, переопределяются на ведущие в те состояния, которые являлись конечными для переходов из удаляемого состояния.

  8. MilestoneDeleteTrigger – триггер, отвечающий за очищение поля MilestoneId задач таблицы Task, связанных с этой вехой.

Оставшиеся два триггера используются для обновления даты модификации проектов таблицы Project и задач таблицы Task:

  1. ProjectUpdateTrigger – триггер, обновляющий поле ModifyDate таблицы Project текущей датой при обновлении проекта.

  2. TaskUpdateTrigger – триггер, обновляющий пол ModifyDate таблицы Task текущей датой при обновлении задания.

2.5 ОТЧЁТЫ

Отчёты – это набор хранимых процедур, позволяющих просматривать статистическую информацию о записях базы данных. Всего было реализовано 4 процедуры генерации отчетов.

  1. UserReport – процедура, выводящая статистику по пользователям с разбиением по проектам. Также возможно ограничить вывод только одним пользователем, пользователями одной должности, либо одним проектом. Отчет содержит следующие колонки: Полное имя пользователя | Должность | Проект | Затрачено часов | Всего задач | Открытых задач | Просроченных задач | Созданных задач | Комментарив | Наблюдаемых задач [User], [Position], [Project], [Spent hours], [Total tasks], [Opened tasks], [Expired tasks], [Created tasks], [Comments], [Audited tasks] Входные параметры: @UserId INT, @PositionId INT, @ProjectId INT

  2. ProjectReport – процедура, выводящая статистику по проектам. Также можно ограничить вывод только одним проектом. Отчет содержит следующие колонки: Проект | Затрачено часов | Оценено часов | Прогресс | Всего задач | Открытых задач | Просроченных задач | Пользователей | Комментариев | Файлов [Project], [Spent hours], [Estimate hours], [Progress], [Total tasks], [Opened tasks], [Expired tasks], [Users], [Comments], [Files] Входные параметры: @ProjectId INT

  3. TasksByState – процедура, выводящая статистику распределения задач по состояниям с разбиением по категориям. Можно ограничить вывод одним состоянием, либо одной категорией состояний. Отчет содержит следующие колонки: Категория | Состояние | Проект | Задачи ([Category] | [State] | [Project] | [Tasks]) Входные параметры: @StateId INT, @CategoryId INT

  4. TasksByMilestone – процедура, выводящая статистику распределения задач по вехам с разбиением по проектам. Можно ограничить вывод вехой или проектом. Отчет содержит следующие колонки: Проект | Веха | Срок | Задачи ([Project], [Milestone], [Due], [Tasks]) Входные параметры: @MilestoneId INT, @ProjectId INT

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]