\usepackage{amsmath} # Разработка систем на основе PostgreSQL #### Стек 1. Операционная система: [`Linux`](https://ubuntu.com/download/desktop), [`Docker`](https://docs.docker.com/get-started/get-docker/) 2. СУБД: [`PostgreSQL`](https://www.postgresql.org/download/) , [`postgrest`](https://docs.postgrest.org/en/v12/) 3. Front: `JavaScript`, `Jquery`, `Html` ## Легенда > Вы включены в команду целью которой состоит в разработке базы данных и **Backend** для системы подготовки метрологических данных в рамках разработки ПАК (Программно-аппаратного комплекса) согласно **Технического задания**.

> `Основаня задача команды` - это разработать решение которое должно соответствовать следующим критериям:
> * Решение должно работать в режиме как `SINGLE-USER` так и `MULTI-USER` > * В режиме `MULTI-USER`, количество одновременных пользователей до **50 000** > * Требуется обеспечить максимальную производительность при минимально производительном оборудовании > * Необходимо обеспечить максимально гибкий и простой вариант загрузки справочников и таблиц стрельбы ### Выгрузка ```sql pg_dump -h localhost -U admin study2025 > 20250131.sql ``` ### Домашние задания | Период | Задание | Решение | |--------------|----------------------------|---------------------------| | | | | | 1 | **2025-01-31** | 1. Создать таблицу для учета пользователей системы. Предусмотреть справочник военных должностей. 2. Изменить таблицу `measurement_batch` изменить поле `username`. 3. Оформить решение в виде скрипта и приложить в виде PullRequest. Если есть вопросы по домашнему заданию, написать в Forlabs. **Решение**
[HomeWork20250131.sql](./_Infra/scripts/HomeWork20250131.sql)
| 2 | **2025-02-07** | 1. Создать `pgSQL` скрипт в который поместить прошлое задание по созданию инфраструктуры проекта. 2. Добавить в `pgSQL` скрипт таблицу поправок по температуре (`Таблица 1`). Так же, добавить данные в эту таблицу. 3. В скрипт включить создание связей по ключам между таблицами и тип данных `interpolation` 4. Написать отдельный `pgSQL` скрипт для расчета поправке к температуре на основе `Таблица 1` с применением интерполяции. 5. Приложить решение в виде PullRequest в решение включить результат расчета интерполяции. **Решение**
[HomeWork20250206.sql](./_Infra/scripts/HomeWork20250206.sql)
[HomeWork20250206_Part2.sql](./_Infra/scripts/HomeWork20250206_Part2.sql)
| 3 | **2025-02-14** | 1. Создать таблицу с настройками для проверки входных данных `measure_settings` В рамках данной таблицы нужно хранить все константы - `Температура`. Минимальное значение -58, максимальное 58, указывается в цельсиях - `Давление`. Минимальное значение 500, максимальное 900, указывается в мм рт ст - `Направление ветра`. Минимальное значение 0,максимальное значение 59 и т.д. 2. Создать собственный тип данных для передачи входных параметров 3. Написать собственную функцию которой на вход должны подаваться входные параметры, а на выходе `собственный тип данных` с заполненными значения. Функция должна проверять входные параметры. При нарушении граничных параметров формировать **raise error** 4. Дописать и оформить `"основной"` скрипт. В него включить все функции для расчета интерполяции и метео средний. 5. Написать отдельный `pgSQL` скрипт, который сформирует тестовые данные. Нужно добавить несколько пользователей в таблицу `emploees` , а так же не менее **100** измерений с разными параметрами для каждого пользователя. Для указания высоты, давления, температуры использовать функцию `random()`. Для создания скрипта обязательно использовать циклы. **Решение**
[HomeWork20250220.sql](./_Infra/scripts/HomeWork20250220.sql)