Задание состоит из двух частей:
- Проектирование логической модели и написание трех SQL-запросов
- Проектирование архитектуры сервиса, реализующего бизнес-требование
Вначале спроектируем логическую модель БД. На ее основе можно автоматически сгенерировать физическую модель и DDL-скрипты для соответсвующей БД. Для этого будем использовать функциональность ПО Enterprise Architect. В качестве РСУБД используем Postgresql.
Логическая модель
Физическая модель. В качестве упрощения предположим, что первичные ключи для всех сущностей в системе суррогатные (хотя, как минимум, для заявок и договоров первичный ключ может быть натуральным).
В задании сказано, что система представляет собой веб-приложение, реализованное на основании REST API с использованием микросервисной архитектуры. Примем, что функциональность, соответствующая бизнес-требованиям по работе с заявками и договорами,будет реализована в одном сервисе. Вариант реализации функциональности работы с заявками и договорами в отдельных микросервисах на данном этапе не рассматриваем.
В качестве архитектуры сервиса заявок допустимо использовать стандартный паттерн layered architecture, состоящий из следующих уровней:
- Уровень контроллеров - содержить обработчики REST API запросов
- Сервисный уровень - содержит бизнес-логику обработки внешних запросов
- Уровень доступа к РСУБД (уровень репозиториев), инкапсулирующий в себе логику работы с БД
Определения методов контроллеров можно сформировать автоматически, если описать бизнес-функциями в стандарте OAS. Усеченный вариант реализации OAS 3.0 под заданные бизнес-функции. В yaml файле представлены базовые CRUD-функции работы с заявками. Функции работы с договорами, справочниками, объектами, контрагентами не реализованы.
Реализуется разработчиками сервиса. Объектную модель (классы) можно сформировать на основе логической модели, представленной ранее.
Реализуется разработчиками сервиса. Схема БД представлена ранее в виде физической модели.