- •«Разработка информационной системы
- •Техническое задание Концепция проекта
- •Требования к информационной системе
- •Состав запросов к бд
- •Исходные отношения Информационные объекты бд
- •Связи и отношения между информационными объектами
- •Требования к целостности системы
- •Даталогическое проектирование Система управления базой данных
- •Таблицы в составе бд
- •Клиентский интерфейс
- •Способ подключения к базе данных
- •Функциональность приложения
- •Состав и реализация форм
- •Диаграмма связи форм в клиентском приложении
- •Алгоритмы работы и архитектура информационной системы
- •Механизмы взаимодействия «клиент-сервер»
- •Логика на стороне сервера
- •Организационное проектирование
- •Источники информации
Диаграмма связи форм в клиентском приложении
Алгоритмы работы и архитектура информационной системы
Выборка списка «Горящих проектов»
Происходит поиск по таблице project (проекты) на предмет превышения срока выполнения проекта: timeFin > timeDeadline. Выборка осуществляется только среди незакрытых проектов, содержащих незавершённые задачи: task.fin = 0.
По запросу пользователя – формирование документа с отчётом, содержащим данные из представленной таблицы.
Добавление / изменение / удаление записи о клиенте / пользователе / проекте / задаче
Пользователь инициирует действие и задаёт соответствующие объекту атрибуты (id для удаления и полный набор параметров для добавления / изменения).
Происходит обращение к изменяемой таблице (client, user, project, task) соответственно.
После проведения изменений данные представляемой таблицы обновляются.
Удаление записи о проекте
Пользователь выбирает объект по параметру name (имя), подлежащий удалению.
Происходит каскадное удаление проекта из таблицы projecr по его id и его (под-)задач из таблицы task по их idProject.
После проведения удаления, представленные данные о проектах обновляются.
Механизмы взаимодействия «клиент-сервер»
Для всех таблиц значение поля идентификатора генерируется автоматически, инкриментно.
Информация о времени начала и завершения задачи/подзадачи/проекта должна генерироваться автоматически.
Вся прочая информация вводится пользователем во взаимодействии с клиентским интерфейсом.
Пользователь может добавлять, изменять, удалять записи в таблицах клиентов, пользователей, проектов и задач.
Таблица специализаций задаётся единожды при начальном формировании БД (в дальнейшем планируется введение функции изменения специализаций в дополнительном окне настроек).
Также планируется добавление дополнительной таблицы, разграничивающей уровни доступа пользователей (в текущей реализации возможно изменить уровень доступа пользователя только напрямую в базе данных).
Логика на стороне сервера
Для таблиц client, project, task и user применяются хранимые процедуры для изменения (в качестве параметра передаются значения всех полей) и удаления (в качестве параметра передаётся идентификатор) записей:
client_del – удаление записи из таблицы клиентов;
client_mod – изменение записи в таблице клиентов;
project_del – удаление записи из таблицы проектов;
project_mod – изменение записи в таблице проектов;
task_del – удаление записи из таблицы задач;
task_mod – изменение записи в таблице задач;
user_del – удаление записи из таблицы пользователей;
user_mod – изменение записи в таблице пользователей;
Добавление новых записей и чтение информации организуется стандартными средствами объекта DataSet среды .NET.
Пример создания хранимой процедуры на изменение записи о проекте
CREATE PROCEDURE project_mod
@id int,
@name nvarchar(50),
@idManager int,
@idClient int,
@timeStart smalldatetime,
@timeFin smalldatetime,
@timeDeadline smalldatetime
AS UPDATE [Projects5thBase].[dbo].[project]
SET [name] = @name
,[idManager] = @idManager
,[idClient] = @idClient
,[timeStart] = @timeStart
,[timeFin] = @timeFin
,[timeDeadline] = @timeDeadline
WHERE [id] = @id
GO
Для каскадного удаления записи о проекте и входящих в него задач создан триггер
CREATE TRIGGER DelProject ON [Projects5thBase].[dbo].[project]
INSTEAD OF DELETE
AS
DELETE FROM task
WHERE idProject IN (SELECT id FROM deleted)
Для формирования таблицы «горящих проектов» создана хранимая процедура
Учитывается состояние задач, входящих в состав проекта. В случае, если все задачи завершены, проект считается закрытым и в выборку не включается.
CREATE PROCEDURE getBurningProjects3
AS
BEGIN
SELECT [name] as Проект, [timeFin] as "Время окончания", [timeDeadline] as "Крайний срок"
FROM [dbo].[project]
WHERE [timeFin] > [timeDeadline] AND
[dbo].[project].[id] IN (SELECT [idProject] FROM [dbo].[task] WHERE [dbo].[task].[fin] = 0)
END
GO