- README: факты курсовой сверены с кодом (пять таблиц, 930 строк датасета → 914 моделей), ссылка клонирования — на настоящий репозиторий вместо шаблонной, инструкция без Docker исправлена (скрипт схемы сам создаёт базу и выполняется под postgres); - CI: ruff, создание схемы и импорт датасета в PostgreSQL; - по тегу v* GitHub Actions собирает MobileDevices.exe (PyInstaller) и кладёт в релиз.
5.2 KiB
Mobile Devices Database
Русский · English
Курсовая по проектированию баз данных: датасет мобильных устройств 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
- Выполните
sql/create_schema.sqlв psql или pgAdmin под пользователемpostgres— скрипт сам создаёт базуmobile_devices_db. - Задайте подключение переменными
DB_HOST,DB_PORT,DB_NAME,DB_USER,DB_PASSWORD(по умолчаниюlocalhost:5432,mobile_devices_db,admin/password). 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
Сделано с ❤️ — deev.space


