
- •База данных системы управления проектами
- •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
Приложение 7 файл Jobs.Sql
USE db209
GO
CREATE TABLE [dbo].[JobSettings]
(
Id INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR(256) NOT NULL,
Value INT NOT NULL
)
GO
CREATE PROCEDURE [dbo].[ChangePerformerInactiveTasksJob]
AS
DECLARE @Value INT = 1
SELECT @Value = Value FROM [dbo].[JobSettings] WHERE Name = 'tasks.update_inactive_after'
UPDATE [dbo].[Task]
SET PerformerId = [dbo].[GetTaskPerformer](Id, PerformerId)
WHERE DATEADD(day, @Value, ModifyDate) < GETDATE()
GO
CREATE PROCEDURE [dbo].[DeleteDoneTasksJob]
AS
DECLARE @Value INT = 1
SELECT @Value = Value FROM [dbo].[JobSettings] WHERE Name = 'tasks.delete_done_after'
DELETE t
FROM [dbo].[Task] t
JOIN [dbo].[Category] c ON t.CategoryId = c.Id AND c.FinalStateId = t.StateId
WHERE DATEADD(day, @Value, ModifyDate) < GETDATE()
GO
USE msdb
GO
EXEC sp_add_job @job_name = 'ChangePerformerInactiveTasks'
EXEC sp_add_jobstep
@job_name = 'ChangePerformerInactiveTasks',
@step_name = 'SingleStep',
@database_name = 'db209',
@command = 'EXEC ChangePerformerInactiveTasksJob'
EXEC sp_add_jobschedule
@job_name = 'ChangePerformerInactiveTasks',
@name = 'ChangePerformerInactiveTasksSchedule',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 000000
EXEC sp_add_jobserver @job_name = 'ChangePerformerInactiveTasks'
GO
EXEC sp_add_job @job_name = 'DeleteDoneTasks'
EXEC sp_add_jobstep
@job_name = 'DeleteDoneTasks',
@step_name = 'SingleStep',
@database_name = 'db209',
@command = 'EXEC DeleteDoneTasksJob'
EXEC sp_add_jobschedule
@job_name = 'DeleteDoneTasks',
@name = 'DeleteDoneTasksSchedule',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 000000
EXEC sp_add_jobserver @job_name = 'DeleteDoneTasks'
GO
Приложение 8 файл Permissions.Sql
USE db209
GO
CREATE ROLE Administrator
CREATE ROLE Manager
CREATE ROLE Contributor
CREATE ROLE Auditor
GO
GRANT EXECUTE ON [dbo].[CreateProject] TO Manager
GRANT EXECUTE ON [dbo].[UpdateProject] TO Manager
GRANT EXECUTE ON [dbo].[DeleteProject] TO Manager
GRANT EXECUTE ON [dbo].[CreateComponent] TO Manager
GRANT EXECUTE ON [dbo].[DeleteComponent] TO Manager
GRANT EXECUTE ON [dbo].[CreateMilestone] TO Manager
GRANT EXECUTE ON [dbo].[DeleteMilestone] TO Manager
GRANT EXECUTE ON [dbo].[CreateTask] TO Contributor
GRANT EXECUTE ON [dbo].[UpdateTask] TO Contributor
GRANT EXECUTE ON [dbo].[DeleteTask] TO Contributor
GRANT EXECUTE ON [dbo].[CreateTaskCheckItem] TO Contributor
GRANT EXECUTE ON [dbo].[DeleteTaskCheckItem] TO Contributor
GRANT EXECUTE ON [dbo].[CreateComment] TO Contributor
GRANT EXECUTE ON [dbo].[DeleteComment] TO Contributor
GRANT EXECUTE ON [dbo].[GetProject] TO Auditor
GRANT EXECUTE ON [dbo].[GetTask] TO Auditor
GRANT EXECUTE ON [dbo].[GetCategoryTransitions] TO Auditor
GRANT EXECUTE ON [dbo].[GetProjectUsers] TO Auditor
GRANT EXECUTE ON [dbo].[GetTaskAuditors] TO Auditor
GRANT EXECUTE ON [dbo].[TasksByMilestone] TO Auditor
GRANT EXECUTE ON [dbo].[TasksByState] TO Auditor
GRANT EXECUTE ON [dbo].[ProjectReport] TO Auditor
GRANT EXECUTE ON [dbo].[UserReport] TO Auditor
GRANT SELECT ON [dbo].[CommentFile] TO Auditor
GRANT SELECT ON [dbo].[Comment] TO Auditor
GRANT SELECT ON [dbo].[TaskFile] TO Auditor
GRANT SELECT ON [dbo].[TaskCheckItem] TO Auditor
GRANT SELECT ON [dbo].[TaskAuditor] TO Auditor
GRANT SELECT ON [dbo].[Task] TO Auditor
GRANT SELECT ON [dbo].[Milestone] TO Auditor
GRANT SELECT ON [dbo].[Component] TO Auditor
GRANT SELECT ON [dbo].[ProjectFile] TO Auditor
GRANT SELECT ON [dbo].[ProjectUser] TO Auditor
GRANT SELECT ON [dbo].[Project] TO Auditor
GRANT SELECT ON [dbo].[User] TO Auditor
GRANT SELECT ON [dbo].[StateTransition] TO Auditor
GRANT SELECT ON [dbo].[Category] TO Auditor
GRANT SELECT ON [dbo].[State] TO Auditor
GRANT SELECT ON [dbo].[Position] TO Auditor
GRANT SELECT ON [dbo].[File] TO Auditor
GRANT INSERT ON [dbo].[CommentFile] TO Contributor
GRANT INSERT ON [dbo].[TaskFile] TO Contributor
GRANT INSERT ON [dbo].[TaskAuditor] TO Contributor
GRANT INSERT ON [dbo].[File] TO Contributor
GRANT INSERT ON [dbo].[ProjectFile] TO Manager
GRANT INSERT ON [dbo].[ProjectUser] TO Manager
GRANT EXECUTE, REFERENCES, SELECT, INSERT, UPDATE, DELETE TO Administrator
GO