Skip to content

Курсовая работа по проектированию БД с GUI на PyQt6. Комплексная информационная система для управления каталогом мобильных устройств. Реализована нормализованная PostgreSQL база данных (3НФ), Python/PyQt6 интерфейс с полным CRUD-функционалом и система анализа производительности с 95% оптимизацией запросов.

Notifications You must be signed in to change notification settings

EDeev/mobiles_dataset

Repository files navigation

📱 Mobile Devices Database Management System

Комплексная система управления каталогом мобильных устройств с GUI-интерфейсом

Python PostgreSQL PyQt6 License

🎯 Назначение проекта

Курсовая работа по дисциплине "Проектирование и администрирование баз данных", представляющая собой полнофункциональную информационную систему для управления данными о мобильных устройствах. Проект демонстрирует практическое применение принципов реляционного моделирования, оптимизации производительности СУБД и создания современных 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 для больших наборов данных)

Установка и настройка

  1. Клонирование репозитория

    git clone https://github.com/username/mobile-devices-db.git
    cd mobile-devices-db
  2. Создание виртуального окружения

    python -m venv venv
    source venv/bin/activate  # Linux/macOS
    # или
    venv\Scripts\activate     # Windows
  3. Установка зависимостей

    pip install -r requirements.txt
  4. Настройка 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;
  5. Развертывание схемы данных

    psql -U admin -d mobile_devices_db -f sql/create_schema.sql
  6. Импорт тестовых данных

    python scripts/import_data.py
  7. Запуск приложения

    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
    }
Loading

Ключевые таблицы

  • 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:

Тестовые сценарии

  1. Простые селективные запросы - поиск по названию компании
  2. Многотабличные JOIN - получение полной информации об устройствах
  3. Агрегирующие операции - статистические запросы с группировкой
  4. Поиск по характеристикам - фильтрация по техническим параметрам

Стратегия оптимизации

-- Базовые 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-развертывания
  • Комплексная система мониторинга производительности

🔧 Документация

Конфигурация базы данных

# Параметры подключения
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


Создано с ❤️ от вашего дорогого - deev.space ©

About

Курсовая работа по проектированию БД с GUI на PyQt6. Комплексная информационная система для управления каталогом мобильных устройств. Реализована нормализованная PostgreSQL база данных (3НФ), Python/PyQt6 интерфейс с полным CRUD-функционалом и система анализа производительности с 95% оптимизацией запросов.

Topics

Resources

Stars

Watchers

Forks

Languages