- README: факты курсовой сверены с кодом (пять таблиц, 930 строк датасета → 914 моделей), ссылка клонирования — на настоящий репозиторий вместо шаблонной, инструкция без Docker исправлена (скрипт схемы сам создаёт базу и выполняется под postgres); - CI: ruff, создание схемы и импорт датасета в PostgreSQL; - по тегу v* GitHub Actions собирает MobileDevices.exe (PyInstaller) и кладёт в релиз.
3.2 KiB
Mobile Devices Database
Русский · English
Database design coursework: the 2025 mobile devices dataset split into a normalized PostgreSQL database,
a PyQt6 desktop app to work with it, and a measurement of index gains with EXPLAIN ANALYZE.
Status: coursework ("Database Design and Administration", Moscow Polytechnic University, 2025), completed
Stack: Python 3.11 · PostgreSQL 15 · psycopg2 · PyQt6 · pandas · Docker
Features
- 3NF schema of five tables (companies, processors, models, regions, prices) with foreign keys and cascading actions
- Import of the Kaggle dataset (930 rows; 914 models and 4569 prices after cleaning) split into reference tables
- App: companies and models with create, edit and delete, prices in five regions (Pakistan, India, China, UAE, USA) with currency symbols, search by name, company and RAM, a price statistics tab
- Index experiment:
EXPLAIN ANALYZEqueries before and after, plans saved insql/explain_results/
| Metric | No indexes | With indexes | Difference |
|---|---|---|---|
| Search | 0.234 ms | 0.089 ms | 62% faster |
| Four-table JOIN | 18.6 ms | 0.95 ms | 95% faster |
| Planner cost | 44.76 | 12.45 | 72% lower |
| Rows scanned | 914 | 18 | 98% fewer |
Measured on this dataset (hundreds of rows), so absolute times are fractions of a millisecond.
Quick start
git clone https://github.com/EDeev/mobiles_dataset.git && cd mobiles_dataset
docker compose up -d # PostgreSQL 15 with the schema from sql/create_schema.sql
pip install -r requirements.txt
python scripts/import_data.py # load the dataset
python main.py # the app
A ready-made Windows build (.exe) is in the releases.
Without Docker
- Run
sql/create_schema.sqlin psql or pgAdmin aspostgres— the script creates themobile_devices_dbdatabase itself. - Set the connection with
DB_HOST,DB_PORT,DB_NAME,DB_USER,DB_PASSWORD(defaults:localhost:5432,mobile_devices_db,admin/password). python scripts/import_data.py, thenpython main.py.
Screenshots
| Companies | Analytics |
|---|---|
![]() |
![]() |
License
Coursework (Database Design and Administration, Moscow Polytechnic University, 2025). The code is open for study; there is no separate license. The dataset comes from Kaggle under its author's terms.
Author
Egor Deev — GitHub · Telegram · egor@deev.space
Made with ❤️ — deev.space


