
- •База данных системы управления проектами
- •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
Министерство образования и науки Российской Федерации
ФГАОУ ВПО «Уральский федеральный университет имени первого Президента России
Б. Н. Ельцина»
Институт радиоэлектроники и информационных технологий – РТФ
Кафедра «Автоматика и информационные технологии»
Оценка_____________________________
База данных системы управления проектами
Пояснительная записка к курсовой работе
По дисциплине: Базы данных
Руководитель И.Ю.Тыров
Студент Н.А.Сметанин
Группы Р-48032
Екатеринбург 2011
СОДЕРЖАНИЕ
1. ПОСТАНОВКА ЗАДАЧИ 3
2. ОПИСАНИЕ БД 4
2.1 ТАБЛИЦЫ 4
2.2 ФУНКЦИИ 11
2.3 ХРАНИМЫЕ ПРОЦЕДУРЫ 12
2.4 ТРИГГЕРЫ 15
2.5 ОТЧЁТЫ 16
2.6 ДЕЙСТВИЯ ПО РАСПИСАНИЮ 17
2.7 ПОЛЬЗОВАТЕЛИ И РОЛИ 18
ЗАКЛЮЧЕНИЕ 20
ПРИЛОЖЕНИЕ 1 ДИАГРАММА БАЗЫ ДАННЫХ 21
ПРИЛОЖЕНИЕ 2 ФАЙЛ Functions.sql 22
ПРИЛОЖЕНИЕ 3 ФАЙЛ Tables.sql 24
ПРИЛОЖЕНИЕ 4 ФАЙЛ Triggers.sql 28
ПРИЛОЖЕНИЕ 5 ФАЙЛ Procedures.sql 30
ПРИЛОЖЕНИЕ 6 ФАЙЛ Reports.sql 37
ПРИЛОЖЕНИЕ 7 ФАЙЛ Jobs.sql 40
ПРИЛОЖЕНИЕ 8 ФАЙЛ Permissions.sql 41
ПРИЛОЖЕНИЕ 9 ФАЙЛ FillData.sql 42
ПРИЛОЖЕНИЕ 10 ФАЙЛ TestData.sql 44
ПРИЛОЖЕНИЕ 11 ФАЙЛ Drop.sql 46
1. Постановка задачи
Целью данной работы является создание базы данных системы управления проектами. Система управления проектами представляет собой программный комплекс, предоставляющий пользователям возможность создавать проекты и задачи, отслеживать их статус, вести по жизненному циклу, назначать отвественных, разграничивать обязанности участников, вести учет времени и ресурсов, а также сохранять дополнительную информацию в виде текстовых описаний и приложенных файлов.
База данных содержит следующие данные:
Списки пользователей.
Списки должностей пользователей.
Категории задач – «Ошибка», «Аналитика» и д.р.
Состояния задач.
Переходы между состояниями задач, реализующие жизненные циклы задач.
Проекты, включая списки участников и связанные файлы.
Компоненты проектов, Вехи проектов.
Задания, включая списки наблюдателей, чек-листы, связанные файлы.
Комментарии, включая прикрепленные файлы.
В БД реализованы средства, позволяющие:
создавать, изменять и удалять проекты
создавать, изменять и удалять задачи
создавать и удалять комментарии
создавать и удалять вехи
создавать и удалять компоненты
просматривать полную информацию о проектах и задачах с учетом вложенных проектов и задач.
генерировать отчеты по пользователям и проектам.
Автоматизированы следующие функции БД:
передача задачи другому исполнителю в случае отсутсвия активности по задаче в течение определенного промежутка времени.
удаление завершенных задач после определенного промежутка времени.
Все скрипты создания БД находятся в следующих файлах:
Functions.sql – функции, необходимые для создания таблиц и процедур.
Tables.sql – таблицы.
Triggers.sql – триггеры.
Procedures.sql – процедуры.
Reports.sql – отчеты.
Jobs.sql – плановые задания.
Permissions.sql – роли и разрешения.
FillData.sql – справочные данные.
TestData.sql – тестовые данные.
Drop.sql – данные для очистки базы данных.
2. Описание бд
2.1 Таблицы
Всего предметную область проекта в базе данных представляют 17 таблиц.
User - таблица пользователей системы. Содержит учетные данные каждого пользователя системы – имя, электронную почту, телефон, должность, связь с системным пользователем MS SQL.
Колонки:
Id -- ID пользователя
Email -- Адрес электронной почты
FirstName -- Имя
MiddleName -- Второе имя
LastName -- Фамилия
Phone -- Телефон
PositionId -- Должность
PhotoFileId -- Фотография
SysUserId -- Связь с пользователем MS SQL.
Ограничения:
CK_User_Name – Проверка на корректность имени
CK_User_EMail -- Проверка на корректность почтового адреса
CK_User_Phone -- Проверка на корректность телефона
FK_User_Position – Внешний ключ к Должности
FK_User_PhotoFile – Внешний ключ к Файлам – фотография.
Position – таблица должностей пользователей системы. Содержит название должностей, к которым относятся пользователи.
Колонки:
Id -- ID должности
Title – Наименование должности
Ограничения:
Title UNIQUE – ограничение уникальности наименования должности.
Category – таблица категорий задач. Содержит название, начальное и конечное состояния.
Колонки:
Id -- ID категории.
Title – Наименование категории.
InitialStateId – Начальное состояние.
FinalStateId – Конечное состояние.
Ограничения:
Title UNIQUE – ограничение уникальности наименования категории.
CK_Category_States – начальное состояние не должно быть равно конечному.
FK_Category_InitialState – внешний ключ к таблице состояний.
FK_Category_FinalState – внешний ключ к таблице состояний.
State - таблица состояний задач системы. Содержит название состояний, в которых могут находиться задачи.
Колонки:
Id -- ID состояния.
Title – Наименование состояния.
Ограничения:
Title UNIQUE – ограничение уникальности наименования состояния.
StateTransition – таблица переходов между состояниями в категории задачи. Содержит ID категории, начального и конечного состояний.
Колонки:
CategoryId – ID категории.
InitialStateId – ID начального состояния.
FinalStateId – ID конечного состояния.
Ограничения:
CK_Category_States – начальное состояние не равно конечному.
FK_Category_InitialState – внешний ключ к таблице состояний.
FK_Category_FinalState – внешний ключ к таблице состояний.
File – таблица файлов, используемых в проектах, задачах и комментариях. Содержит имя и содержимое файлов.
Колонки:
Id – ID файла.
Name – Имя файла.
Content – Содержимое.
Ограничения:
Name <> ‘’ - имя не должно быть пустым.
Name UNIQUE – имя должно быть уникальным.
Project – таблица проектов, содержащих подпроекты и задачи.
Колонки:
Id – ID проекта.
ParentId - ID родительского проекта.
Title – Наименование проекта.
CreatorId – ID пользователя – создателя проекта.
ManagerId – ID пользователя – менеджера проекта.
StartDate – дата начала проекта.
EndDate – дата окончания проекта.
Content – содержимое (описание) проекта.
IsDone – завершен ли проект.
ModifyDate – дата изменения проекта.
Ограничения:
U_Project_ParentTitle – в пределах одного родительского проекта наименование должно быть уникально.
CK_Project_EndDate – дата окончания проекта не должна быть до даты начала проекта.
FK_Project_Parent – внешний ключ к таблице проектов – родительский.
FK_Project_Creator – внешний ключ к таблице пользователей.
FK_Project_Manager – внешний ключ к таблице пользователей.
ProjectUser – таблица пользователей - участников проектов.
Колонки:
ProjectId – ID проекта.
UserId – ID пользователя.
Ограничения:
PK_ProjectUser – первичный ключ (ProjectId, UserId)
FK_ProjectUser_Project – внешний ключ к таблице проектов.
FK_ProjectUser_User – внешний ключ к таблице пользователей.
ProjectFile – таблица файлов, связанных с проектом.
Колонки:
ProjectId – ID проекта.
FileId – ID файла.
Ограничения:
PK_ProjectFile – первичный ключ (ProjectId, FileId)
FK_ProjectFile_Project – внешний ключ к таблице проектов.
FK_ProjectFile_File – внешний ключ к таблице файлов.
Component – таблица компонентов проекта. Каждый компонент имеет также и вложенные компоненты. К компонентам привязываются задачи.
Колонки:
Id – ID компонента.
ParentId – ID родительского компонента.
ProjectId – ID проекта.
Title – Наименование компонента.
Ограничения:
U_Component_ProjectTitle - в пределах одного проекта наименование должно быть уникально.
FK_Component_Parent – внешний ключ к таблице компонентов – родительский.
FK_Component_Project – внешний ключ к таблице проектов.
Milestone – таблица вех проектов. Каждая веха имеет срок – дату, к которой связанные с ней задачи должны быть выполнены.
Колонки:
Id – ID компонента.
ProjectId – ID проекта.
Title – Наименование компонента.
Due – Дата вехи.
Ограничения:
U_Milestone_ProjectTitle - в пределах одного проекта наименование должно быть уникально.
FK_Milestone_Project – внешний ключ к таблице проектов.
Task – таблица задач. Задачи привязаны к проекту и категории, могут иметь собственные подзадачи. У задачи есть создатель и исполнитель, даты начала и завершения, оцененное и затраченное время.
Колонки:
Id – ID задачи.
ParentId – ID родительской задачи.
ProjectId – ID проекта.
Title – Наименование задачи.
CategoryId – ID категории задачи.
ComponentId – ID компонента задачи.
StateId – ID состояния задачи.
StartDate – Дата начала.
EndDate – Дата окончания.
CreatorId – ID создателя задачи.
PerformerId – ID исполнителя задачи.
MilestoneId – ID вехи.
EstimatedTime – Оцененное время, часов.
SpentTime – Затраченое время, часов.
Progress – Прогресс задачи.
Content – Содержимое (Описание) задачи.
ModifyDate – Дата изменения задачи.
Ограничения:
U_Task_ProjectParentTitle - в пределах одного проекта и одной родительской задачи наименование должно быть уникально.
CK_Task_CheckTask – задача должна удоволетворять требованиям функции CheckTask.
CK_Task_EndDate – дата окончания задачи не должна быть до даты начала.
FK_Task_Parent – внешений ключ к таблице заданий – родительский.
FK_Task_Project – внешний ключ к таблице проектов.
FK_Task_Category – внешний ключ к таблице категорий.
FK_Task_Component – внешний ключ к таблице компонентов.
FK_Task_CreatorUser – внешний ключ к таблице пользователей.
FK_Task_PerformerUser – внешний ключ к таблице пользователей.
FK_Task_Milestone – внешний ключ к таблице вех.
TaskAuditor - таблица аудиторов (наблюдателей) задачи.
Колонки:
TaskId – ID задачи.
UserId – ID пользователя - аудитора.
Ограничения:
PK_TaskAuditor – первичный ключ (TaskId, UserId)
FK_ TaskAuditor_Task – внешний ключ к таблице задач.
FK_ TaskAuditor_User – внешний ключ к таблице пользователей.
TaskCheckItem – таблица пунктов задачи. Пункты отражают чек-лист – список действий, которые должны быть выполнены.
Колонки:
Id – ID компонента.
TaskId – ID задачи.
Title – Наименование компонента.
IsDone – Завершена ли задача.
Ограничения:
U_TaskCheckItem_TaskTitle - в пределах одной задачи наименование должно быть уникально.
FK_TaskCheckItem_Task – внешний ключ к таблице задач.
TaskFile - таблица файлов, связанных с задачей.
Колонки:
TaskId – ID задачи.
FileId – ID файла.
Ограничения:
PK_TaskFile – первичный ключ (TaskId, FileId)
FK_TaskFile_Task – внешний ключ к таблице задач.
FK_TaskFile_File – внешний ключ к таблице файлов.
Comment - таблица комментариев к задачам.
Колонки:
Id – ID комментария
TaskId – ID задачи.
UserId – ID пользователя - автора.
Content – содержимое (текст) комментария.
Ограничения:
FK_Comment_Task – внешний ключ к таблице задач.
FK_Comment_User – внешний ключ к таблице пользователей.
CommentFile - таблица файлов, связанных с комментарием.
Колонки:
CommentId – ID комментария.
FileId – ID файла.
Ограничения:
PK_CommentFile – первичный ключ (CommentId, FileId)
FK_CommentFile_Comment – внешний ключ к таблице комментариев.
FK_CommentFile_File – внешний ключ к таблице файлов.
Кроме того, для увеличения скорости выборки добавлены некластерные индексы на некоторые поля таблиц, для которых MS SQL еще не создал их автоматически.