| docs | ||
| scripts | ||
| sql | ||
| database.py | ||
| main.py | ||
| main_window.py | ||
| Mobiles Dataset 2025.csv | ||
| README.md | ||
| requirements.txt | ||
📱 Mobile Devices Database Management System
Комплексная система управления каталогом мобильных устройств с 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
📊 Структура базы данных
Реляционная модель (3НФ)
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 ©