Комплексная система управления каталогом мобильных устройств с GUI-интерфейсом
Курсовая работа по дисциплине "Проектирование и администрирование баз данных", представляющая собой полнофункциональную информационную систему для управления данными о мобильных устройствах. Проект демонстрирует практическое применение принципов реляционного моделирования, оптимизации производительности СУБД и создания современных desktop-приложений.
📦 mobile-devices-db/
├── database.py # Слой доступа к данным (DAO)
├── main_window.py # GUI-интерфейс на PyQt6
├── main.py # Запускаемый файл
├── Mobiles Dataset 2025.csv # Дата-сет данных
├── 🗃️ sql/ # SQL-скрипты и схема БД
│ ├── create_schema.sql # Создание нормализованной структуры
│ └── performance_analysis.sql # Тестовые запросы для анализа
├── 🐍 scripts/ # Python-модули системы
│ └── import_data.py # Система импорта и нормализации
├── 📊 docs/ # Техническая документация
└── 📋 requirements.txt # Зависимости проекта
- СУБД: PostgreSQL 15.x с расширенными возможностями индексирования
- Backend: Python 3.11+ с паттерном Singleton для управления соединениями
- Frontend: PyQt6 с архитектурой Model-View-Controller
- Интеграция: psycopg2 для типобезопасного взаимодействия с БД
- Нормализация до 3НФ: Декомпозиция исходного CSV в 5 взаимосвязанных таблиц
- Референциальная целостность: Система FK с каскадными операциями
- Оптимизация производительности: Стратегическое индексирование с 62-95% улучшением
- CRUD-функционал: Полный спектр операций через интуитивный GUI
Метрика | До оптимизации | После оптимизации | Улучшение |
---|---|---|---|
Время выполнения поиска | 0.234 мс | 0.089 мс | 62% быстрее |
JOIN-запросы (4 таблицы) | 18.6 мс | 0.95 мс | 95% быстрее |
Стоимость по планировщику | 44.76 ед. | 12.45 ед. | 72% снижение |
Обработанные строки | 914 (фильтрация) | 18 (прямой доступ) | 98% сокращение |
- Интеллектуальный поиск по множественным атрибутам устройств
- Валютная локализация ценовой информации (5 регионов)
- Автоматический импорт данных с нормализацией на лету
- Аналитические отчеты с региональной статистикой
Проект использует актуальный датасет мобильных устройств 2025 года:
- Источник: Kaggle - Mobiles Dataset 2025
- Размер: 1000+ записей устройств
- Охват: Основные производители (Apple, Samsung, Xiaomi, OnePlus, etc.)
- Регионы: Пакистан, Индия, Китай, США, ОАЭ
- Python 3.11+ с поддержкой venv
- PostgreSQL 15.x с административными правами
- 4GB RAM (рекомендуется 8GB для больших наборов данных)
-
Клонирование репозитория
git clone https://github.com/username/mobile-devices-db.git cd mobile-devices-db
-
Создание виртуального окружения
python -m venv venv source venv/bin/activate # Linux/macOS # или venv\Scripts\activate # Windows
-
Установка зависимостей
pip install -r requirements.txt
-
Настройка PostgreSQL
-- Создание пользователя и БД CREATE USER admin WITH PASSWORD 'your_password'; CREATE DATABASE mobile_devices_db OWNER admin; GRANT ALL PRIVILEGES ON DATABASE mobile_devices_db TO admin;
-
Развертывание схемы данных
psql -U admin -d mobile_devices_db -f sql/create_schema.sql
-
Импорт тестовых данных
python scripts/import_data.py
-
Запуск приложения
python scripts/main_window.py
erDiagram
COMPANIES ||--o{ MODELS : manufactures
PROCESSORS ||--o{ MODELS : uses
MODELS ||--o{ PRICES : "has prices in"
REGIONS ||--o{ PRICES : "contains prices"
COMPANIES {
int company_id PK
varchar company_name UK
}
MODELS {
int model_id PK
varchar model_name
int company_id FK
int processor_id FK
varchar ram
varchar battery_capacity
int launched_year
}
PRICES {
int price_id PK
int model_id FK
int region_id FK
decimal price
varchar currency
}
- Companies: Справочник производителей (19 уникальных компаний)
- Models: Каталог устройств (914 моделей с техническими характеристиками)
- Processors: Справочник процессоров (217 уникальных чипсетов)
- Regions: Географические регионы ценообразования (5 регионов)
- Prices: Региональная ценовая информация (4,569 записей)
- 📋 Каталог компаний: Обзор производителей с количеством моделей
- 📱 Управление моделями: CRUD-операции с техническими характеристиками
- 💰 Ценовое управление: Редактирование цен с валютной локализацией
- 📊 Аналитическая панель: Региональная статистика и отчеты
# Пример поискового запроса
def search_models(self, search_text: str):
"""Интеллектуальный поиск по множественным атрибутам"""
return self.db.search_models(search_text)
# Валютная локализация
CURRENCY_MAP = {
'Pakistan': ('PKR', '₨'),
'India': ('INR', '₹'),
'China': ('CNY', '¥'),
'USA': ('USD', '$'),
'Dubai': ('AED', 'د.إ')
}
Комплексный анализ производительности выполнен с использованием PostgreSQL EXPLAIN ANALYZE:
- Простые селективные запросы - поиск по названию компании
- Многотабличные JOIN - получение полной информации об устройствах
- Агрегирующие операции - статистические запросы с группировкой
- Поиск по характеристикам - фильтрация по техническим параметрам
-- Базовые B-tree индексы
CREATE INDEX idx_companies_name ON companies(company_name);
CREATE INDEX idx_models_company_id ON models(company_id);
-- Составные индексы для комплексных запросов
CREATE INDEX idx_models_ram_battery ON models(ram, battery_capacity);
-- Функциональные индексы для LIKE-операций
CREATE INDEX idx_companies_name_pattern ON companies(company_name varchar_pattern_ops);
- Импорт данных: 930 записей устройств с 100% целостностью
- Нормализация: 60% сокращение избыточности данных
- Производительность: 95% улучшение для сложных JOIN-запросов
- Индексирование: 72% снижение стоимости по планировщику
- Полная автоматизация процесса нормализации данных
- Интуитивный GUI с поддержкой валютной локализации
- Масштабируемая архитектура для enterprise-развертывания
- Комплексная система мониторинга производительности
- Техническая документация - Подробное описание архитектуры и API
- Отчет по курсовой работе - Полный академический отчет
- SQL-скрипты - Схемы БД и запросы для анализа производительности
# Параметры подключения
DATABASE_CONFIG = {
'host': 'localhost',
'port': 5432,
'database': 'mobile_devices_db',
'user': 'admin',
'password': 'your_password'
}
psycopg2-binary==2.9.9 # PostgreSQL adapter
PyQt6==6.6.1 # GUI framework
pandas==2.1.4 # Data processing
numpy==1.26.2 # Numerical computing
- Веб-интерфейс: Реализация REST API на FastAPI
- Автоматизация: Интеграция с внешними API для обновления каталога
- Мониторинг: Real-time дашборды производительности
- Machine Learning: Прогнозирование ценовых тенденций
- Микросервисы: Архитектурная модернизация для cloud-deployment
- Аналитика: Интеграция с Apache Kafka для stream-processing
Проект демонстрирует практическое применение ключевых концепций:
- Нормализация реляционных данных до третьей нормальной формы
- Оптимизация производительности СУБД через стратегическое индексирование
- Архитектурные паттерны для desktop-приложений с базами данных
- Проектирование и реализация нормализованных схем данных
- Анализ и оптимизация производительности SQL-запросов
- Создание многокомпонентных приложений с GUI-интерфейсом
Этот проект создан в учебных целях как курсовая работа по дисциплине "Проектирование и администрирование баз данных" в Московском Политехническом Университете, 2024-2025 учебный год.
Деев Егор Викторович - Backend Developer
- GitHub: @EDeev
- Email: egor@deev.space
- Telegram: @Egor_Deev
Создано с ❤️ от вашего дорогого - deev.space ©