Универсальная учебная модель из 3 таблиц
Ответы
Отличная идея 👍 Ниже — **универсальная учебная модель из 3 таблиц**, которая **покроет 100% заданий курса**: фильтрация, JOIN, агрегации, подзапросы, оконные функции и аналитика. --- # Учебная схема БД (3 таблицы) ## 1. Таблица `users` — пользователи ```sql users ( id INT PRIMARY KEY, full_name VARCHAR(100), email VARCHAR(100), city VARCHAR(50), age INT, registered_at DATE ) ``` **Назначение** * Анализ пользователей * Фильтрация по возрасту, городу * Группировка по городам * Связь с заказами **Типовые вопросы** * Сколько пользователей в каждом городе? * Кто зарегистрировался позже всех? * Пользователи без заказов --- ## 2. Таблица `orders` — заказы ```sql orders ( id INT PRIMARY KEY, user_id INT REFERENCES users(id), order_date DATE, amount NUMERIC(10, 2), status VARCHAR(20) ) ``` **Примеры статусов** * `new` * `paid` * `cancelled` * `refunded` **Назначение** * Финансовая аналитика * JOIN с пользователями * Оконные функции * Подзапросы **Типовые вопросы** * Сумма заказов по пользователям * Средний чек * Топ клиентов * Последний заказ пользователя --- ## 3. Таблица `payments` — платежи ```sql payments ( id INT PRIMARY KEY, order_id INT REFERENCES orders(id), payment_date DATE, payment_type VARCHAR(20), paid_amount NUMERIC(10, 2) ) ``` **Примеры типов оплаты** * `card` * `cash` * `transfer` **Назначение** * JOIN по нескольким таблицам * Проверка соответствия платежей и заказов * Более сложная аналитика **Типовые вопросы** * Какие заказы оплачены не полностью? * Каким способом платят чаще? * Сумма платежей по датам --- # Связи между таблицами ``` users 1 ────< orders 1 ────< payments ``` * Один пользователь → много заказов * Один заказ → один или несколько платежей --- # Почему эта схема идеальна для курса ✔ всего **3 таблицы** — легко держать в голове ✔ покрывает **все темы SQL** ✔ подходит для: * аналитики * backend * собеседований ✔ масштабируется (можно добавить `products`, не ломая курс) --- ## Примеры заданий, которые сразу возможны * Пользователи без заказов (LEFT JOIN) * Топ-3 заказа каждого пользователя (оконные функции) * Клиенты с суммой заказов выше среднего (подзапросы) * Оплаченные и неоплаченные заказы * Ранжирование пользователей по выручке --- Если хочешь, следующим шагом могу: * ✍️ **написать DDL + тестовые данные (INSERT)** * 📘 **привязать каждое задание курса к этим таблицам** * 🎯 **сделать набор задач уровня собеседования**