- cпроектировать базу данных
- Реализуйте сущности продукты, категории продуктов, цены, поставщики, производители, покупатели и покупки. Свои решения для этой схемы приветствуются
- В проекте должны быть
- схема
- описание таблиц и полей
- примеры бизнес-задач которые решает база
Реализованные сущности (структура БД, описание таблиц и полей находится тут):
- пользователь
- таблица для хранения подписок на других пользователей
- таблица для хранения любимых рецептов
- продукты
- наименование (англ + рус)
- КБЖУ на 100г
- категории (рыба / мясо / молочка / овощи / фрукты ...)
- рецепты
- наименование блюда
- кол-во порций - default value
- КБЖУ на 1 порцию
- фото финального блюда
- время приготовления
- сложность приготовления
- категории (англ + рус)
- Рецепты блюд по времени приема пищи: завтрак / обед / ужин / перекус / полдник
- Рецепты по типу блюд: закуска / десерт / суп / первое блюдо / второе блюдо / напитки / гарнир / салат и т.п.
- Рецепты с использованием: духовка / плита / микроволновка
- Рецепты по способу приготовления блюд: выпекать / варить / жарить / тушить
- Рецепты национальных кухонь: Русская кухня / Французская кухня / Итальянская кухня / Азиатская кухня
- Основа блюда: мясо / рыба / овощи / птица / морепродукты / тесто
- Рецепты блюд по событию: Новый год / Великий пост / Пасха / День благодарения
- Другое: пп
- этапы приготовления
- фото этапов приготовления блюда
- описание
- ингредиенты
- кол-во ингредиентов на 1 порцию
- единицы измерений
- список покупок (хранит в себе не только список и кол-во продуктов, которые необходимо купить, но и список блюд и кол-во порций по каждому)
- продукты
- название
- кол-во (сумма по всем рецептам)
- единицы измерений
- рецепты
- названия
- кол-во порций
- продукты
- отзывы на рецепты
- Добавляем в модель данных дополнительные индексы и ограничения
- Проводим анализ возможных запросов\отчетов\поиска данных.
- Предполагаем возможную кардинальность поля.
- Создаем дополнительные индексы - простые или композитные.
- На каждый индекс пишем краткое описание зачем он нужен (почему по этому полю\полям).
- Думаем какие логические ограничения в БД нужно добавить - например какие поля должны быть уникальны, в какие нужно добавить условия, чтобы не нарушить бизнес логику. Пример - нельзя провести операцию по переводу средств на отрицательную сумму.
- Создаем ограничения по выбранным полям
- Развернуть контейнер с PostgreSQL или установить СУБД на виртуальную машину.
- Запустить сервер.
- Создать клиента с подключением к базе данных postgres через командную строку.
- Подключиться к серверу используя pgAdmin или другое аналогичное приложение.
# run all containers in docker-compose file
docker compose up
- Используя операторы DDL создать:
- Базу данных
- Табличные пространства
- Роли
- Схему данных
- Таблицы своего проекта, распределив их по схемам
- Распределить таблицы по табличным пространствам
- Написать запрос с конструкциями SELECT, JOIN
- Написать запрос с добавлением данных INSERT INTO
- Написать запрос с обновлением данных с UPDATE FROM
- Использовать using для оператора DELETE
- Напишите запрос по своей базе с регулярным выражением, добавьте пояснение, что вы хотите найти
- Напишите запрос по своей базе с использованием LEFT JOIN и INNER JOIN, как порядок соединений в FROM влияет на результат? Почему?
- Напишите запрос на добавление данных с выводом информации о добавленных строках.
- Напишите запрос с обновлением данных используя UPDATE FROM.
- Напишите запрос для удаления данных с оператором DELETE используя join с другой таблицей с помощью using.
- *Приведите пример использования утилиты COPY