# π± Mobile Devices Database Management System **ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² Ρ GUI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ** [](https://python.org) [](https://postgresql.org) [](https://pypi.org/project/PyQt6/) [](#) ## π― ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ "ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ", ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ . ΠΡΠΎΠ΅ΠΊΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π‘Π£ΠΠ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ 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 ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ²) - **ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡ** Π΄Π°Π½Π½ΡΡ Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½Π° Π»Π΅ΡΡ - **ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΡΠ΅ΡΡ** Ρ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ ## π ΠΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ ### Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ - **Python 3.11+** Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ venv - **PostgreSQL 15.x** Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ - **4GB RAM** (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ 8GB Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ) ### Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° 1. **ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ** ```bash git clone https://github.com/username/mobile-devices-db.git cd mobile-devices-db ``` 2. **Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ** ```bash python -m venv venv source venv/bin/activate # Linux/macOS # ΠΈΠ»ΠΈ venv\Scripts\activate # Windows ``` 3. **Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ** ```bash pip install -r requirements.txt ``` 4. **ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° PostgreSQL** ```sql -- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΠ 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. **Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π΄Π°Π½Π½ΡΡ ** ```bash psql -U admin -d mobile_devices_db -f sql/create_schema.sql ``` 6. **ΠΠΌΠΏΠΎΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ ** ```bash python scripts/import_data.py ``` 7. **ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ** ```bash python scripts/main_window.py ``` ## π Π‘ΡΡΡΠΊΡΡΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ### Π Π΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ (3ΠΠ€) ```mermaid 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-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ - **π° Π¦Π΅Π½ΠΎΠ²ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅**: Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π½ Ρ Π²Π°Π»ΡΡΠ½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ - **π ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ°Π½Π΅Π»Ρ**: Π Π΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈ ΠΎΡΡΠ΅ΡΡ ### Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ```python # ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° 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. **ΠΠΎΠΈΡΠΊ ΠΏΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌ** - ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ #### Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ```sql -- ΠΠ°Π·ΠΎΠ²ΡΠ΅ 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-ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ - ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ## π§ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ### ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ```python # ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ 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-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ## π¨βπ» ΠΠ²ΡΠΎΡ **ΠΠ΅Π΅Π² ΠΠ³ΠΎΡ ΠΠΈΠΊΡΠΎΡΠΎΠ²ΠΈΡ** - Backend Developer - GitHub: [@EDeev](https://github.com/EDeev) - Email: egor@deev.space - Telegram: [@Egor_Deev](https://t.me/Egor_Deev) ---
ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ ΠΠΎΠ»ΠΈΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ, Π€Π°ΠΊΡΠ»ΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, 2024-2025 ΡΡΠ΅Π±Π½ΡΠΉ Π³ΠΎΠ΄
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ Ρ β€οΈ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΎΡΠΎΠ³ΠΎΠ³ΠΎ - deev.space Β©