1
0
Fork 0
mirror of https://github.com/EDeev/mobiles_dataset.git synced 2026-10-07 20:49:44 +03:00
mobiles_dataset/README.md
Egor Deev 2daa52a238 README на русском и английском, скриншоты, CI и сборка .exe в релиз
- README: факты курсовой сверены с кодом (пять таблиц, 930 строк датасета → 914 моделей),
  ссылка клонирования — на настоящий репозиторий вместо шаблонной, инструкция без Docker
  исправлена (скрипт схемы сам создаёт базу и выполняется под postgres);
- CI: ruff, создание схемы и импорт датасета в PostgreSQL;
- по тегу v* GitHub Actions собирает MobileDevices.exe (PyInstaller) и кладёт в релиз.
2026-10-05 17:36:36 +00:00

5.2 KiB
Raw Blame History

Mobile Devices Database

Русский · English

CI Release

Курсовая по проектированию баз данных: датасет мобильных устройств 2025 года, разложенный в нормализованную базу PostgreSQL, десктопное приложение на PyQt6 для работы с ним и измерение выигрыша от индексов через EXPLAIN ANALYZE.

Статус: учебный проект (курсовая «Проектирование и администрирование баз данных», Московский Политех, 2025), завершён

Вкладка «Модели»

Стек: Python 3.11 · PostgreSQL 15 · psycopg2 · PyQt6 · pandas · Docker

Возможности

  • Схема в 3НФ из пяти таблиц (компании, процессоры, модели, регионы, цены) с внешними ключами и каскадными операциями
  • Импорт датасета с Kaggle (930 строк, после очистки 914 моделей и 4569 цен) с разнесением по справочникам
  • Приложение: компании и модели с добавлением, правкой и удалением, цены по пяти регионам (Пакистан, Индия, Китай, ОАЭ, США) с символами валют, поиск по названию, компании и RAM, вкладка статистики цен
  • Эксперимент с индексами: запросы EXPLAIN ANALYZE до и после, планы сохранены в sql/explain_results/
Метрика Без индексов С индексами Разница
Поиск 0,234 мс 0,089 мс быстрее на 62 %
JOIN четырёх таблиц 18,6 мс 0,95 мс быстрее на 95 %
Стоимость по планировщику 44,76 12,45 ниже на 72 %
Просмотренные строки 914 18 меньше на 98 %

Измерено на этом датасете (сотни строк), поэтому абсолютные времена — доли миллисекунды.

Быстрый старт

git clone https://github.com/EDeev/mobiles_dataset.git && cd mobiles_dataset
docker compose up -d                  # PostgreSQL 15 со схемой из sql/create_schema.sql
pip install -r requirements.txt
python scripts/import_data.py         # загрузка датасета
python main.py                        # приложение

Готовая сборка для Windows (.exe) — в релизах.

Без Docker

  1. Выполните sql/create_schema.sql в psql или pgAdmin под пользователем postgres — скрипт сам создаёт базу mobile_devices_db.
  2. Задайте подключение переменными DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD (по умолчанию localhost:5432, mobile_devices_db, admin / password).
  3. python scripts/import_data.py, затем python main.py.

Как выглядит

Компании Аналитика
Компании Аналитика

Структура

database.py               доступ к БД (синглтон, параметризованные запросы)
main_window.py, main.py   приложение на PyQt6
scripts/import_data.py    импорт и нормализация датасета
scripts/exe/              однофайловая версия приложения для сборки .exe
sql/                      схема, запросы для анализа производительности, ERD, результаты EXPLAIN
docs/report.*             отчёт по курсовой (md, docx, pdf)

Лицензия

Учебный проект (Проектирование и администрирование баз данных, Московский Политех, 2025). Код открыт для изучения, отдельной лицензии нет. Датасет — с Kaggle, на условиях его автора.

Автор

Деев Егор Викторович — GitHub · Telegram · egor@deev.space


⭐ Если проект оказался полезным, поставьте звёздочку на GitHub!

Сделано с ❤️ — deev.space