Читать книгу SQL для аналитика. 50 задач с решениями на PostgreSQL - Ар'лан ис'Дрекхэм - Страница 4
Часть 1. Установка. Повторение SQL
Глава 2. Устанавливаем схему. Что есть в нашей схеме
ОглавлениеДля дальнейшей работы нам нужно создать демо-базу данных и заполнить её информацией.
Что скачиваем
Вам понадобится загрузить файл market. sql. Он находится в специальном репозитории на GitHub.
Ссылка на репозиторий: https://github.com/atvcross/postgresql_analyst
Как скачать файл:
– Нажмите на зелёную кнопку Code
– Выберите Download ZIP
– Распакуйте архив в любую папку
– Внутри найдите файл market. sql
Устанавливаем схему через pgAdmin
– Откройте pgAdmin.
– Создайте новую базу данных.
В дереве слева нажмите правой кнопкой на Databases → Create → Database.
В поле Database введите book_analytics. Остальные поля менять не нужно. Нажмите Save.
– Откройте Query Tool. (Главное меню -> Tools -> Query Tool)
Нажмите правой кнопкой на book_analytics → Query Tool.
– Загрузите файл market. sql.
В редакторе Query Tool нажмите на значок папки (Open File). Выберите скачанный файл market. sql.
Также можно открыть файл в текстовом редакторе (например, Блокнот) и перенести текст в Query Tool через буфер обмена.
– Выполните скрипт.
Нажмите кнопку Execute (или клавишу F5).
Будут созданы нужные таблицы и заполнены данными.
Проверка установки
В левой панели (дерево объектов) нажмите правой кнопкой на book_analytics → Refresh.
Раскройте Schemas → public → Tables. Здесь должны отобразиться все восемь таблиц:
– users
– categories
– products
– orders
– order_items
– payments
– users_log
– user_comments
Если таблиц нет или их меньше – схема установилась не полностью, или произошла ошибка. Попробуйте выполнить скрипт заново.
Если всё хорошо, выполните проверочный запрос в Query Tool:
text
SELECT COUNT (*) FROM users;
Должно вернуться 15.
Что есть в нашей схеме
Это схема интернет-магазина, который торгует разными товарами. Здесь есть товары, заказы, пользователи, платежи. Давайте подробнее о каждой таблице.
users – пользователи.
Колонки: user_id, user_name, registered_at, country, is_active.
Хранит идентификатор, имя, дату регистрации, страну, активен ли пользователь.
categories – категории товаров.
Колонки: category_id, name, parent_id.
Построена как дерево: у каждой категории может быть родитель (parent_id). Это позволяет делать иерархические запросы.
products – товары.
Колонки: product_id, name, category_id, price.
Название, цена, привязка к категории.
orders – заказы.
Колонки: order_id, user_id, order_date, shipped_date, delivered_date, status.
Кто заказал, когда, статус заказа, даты отгрузки и доставки.
order_items – состав заказа.
Колонки: order_id, product_id, quantity, price_per_unit.
Какие товары и в каком количестве купили. Цена за единицу фиксируется на момент покупки.
payments – платежи.
Колонки: payment_id, order_id, amount, payment_date, payment_method.
Сумма, дата, способ оплаты. Привязан к заказу.
users_log – лог событий.
Колонки: log_id, user_id, action, dt_tm, log_data.
Действия пользователя: enter, show, add_to_cart, buy, exit, error. Плюс время события и дополнительные данные в формате JSONB.
user_comments – отзывы.
Колонки: comment_id, user_id, product_id, rating, comment_text, comment_date.
Текст отзыва, оценка от 1 до 5, дата. Привязан к пользователю и товару.
Вопросы и ответы. А вдруг что-то пошло не так
В: Ошибка: база book_analytics уже существует
О: Удалите старую: нажмите правой кнопкой на book_analytics → Delete/Drop. Затем создайте заново.
В: Ошибка: duplicate key violates unique constraint
О: Та же проблема. Удалите старую базу и повторите установку.
В: Ошибка: permission denied
О: Запустите pgAdmin от имени администратора.
В: Пустой результат при проверке
О: Выполнили SELECT COUNT (*) FROM users, а вернулся 0? Значит, данные не загрузились. Запустите market. sql ещё раз.
Что в итоге
Если всё сделали правильно – переходите к главе 3. Если таблиц нет или запрос вернул не 15 – перечитайте раздел «Устанавливаем схему через pgAdmin’ и выполните скрипт заново.