149 lines
4.8 KiB
Markdown
149 lines
4.8 KiB
Markdown
# Database Cleanup Recommendations
|
|
|
|
## Executive Summary
|
|
After comprehensive analysis of the tilbudgivern database, I've identified significant opportunities for optimization:
|
|
- **32 total tables** in database
|
|
- **15 actively used tables** by current APIs
|
|
- **17 potentially unused tables** for cleanup
|
|
- **5 completely empty tables** to remove
|
|
- **Multiple duplicate/legacy table structures** to consolidate
|
|
|
|
## Tables to REMOVE (Safe to delete)
|
|
|
|
### 1. Completely Empty Tables
|
|
These tables have 0 rows and no active API usage:
|
|
```sql
|
|
DROP TABLE bygma_materials_cache; -- 0 rows, no API usage
|
|
DROP TABLE quote_items; -- 0 rows, legacy structure
|
|
DROP TABLE quote_feedback; -- 0 rows, no feedback system
|
|
DROP TABLE quote_pricing_history; -- 0 rows, no historical tracking
|
|
DROP TABLE recent_material_prices; -- 0 rows, no recent price tracking
|
|
```
|
|
|
|
### 2. Legacy/Unused Tables
|
|
These tables appear to be from older implementations:
|
|
```sql
|
|
DROP TABLE labor_categories; -- Replaced by task_categories
|
|
DROP TABLE labor_items; -- Legacy labor tracking
|
|
DROP TABLE orders; -- No order management in current system
|
|
DROP TABLE order_tasks; -- Related to removed orders table
|
|
DROP TABLE time_entries; -- No time tracking in current APIs
|
|
DROP TABLE materials; -- Superseded by material_prices
|
|
DROP TABLE users; -- No user management system
|
|
DROP TABLE sessions; -- No session management
|
|
```
|
|
|
|
### 3. Obsolete Pricing Tables
|
|
```sql
|
|
DROP TABLE pricing_history; -- No historical price tracking
|
|
DROP TABLE web_price_suggestions; -- Not used by current web pricing
|
|
DROP TABLE standard_pricing; -- Replaced by material_prices
|
|
```
|
|
|
|
## Tables to KEEP (Active Usage)
|
|
|
|
### Core Project System
|
|
- `customer_projects` (8 rows) - Main project management
|
|
- `project_geometry` (8 rows) - Project measurements
|
|
- `project_labor` (8 rows) - Labor calculations
|
|
- `project_materials` (25 rows) - Project materials
|
|
- `project_quotes` (8 rows) - Generated quotes
|
|
- `project_types` (4 rows) - Project categorization
|
|
- `roof_types` (6 rows) - Roof type definitions
|
|
|
|
### Pricing & Materials
|
|
- `material_prices` (2,427 rows) - Main material pricing
|
|
- `dynamic_materials` (1,095 rows) - Dynamic pricing data
|
|
- `ocr_materials` (1,183 rows) - OCR processed materials
|
|
- `task_categories` (12 rows) - Labor categories
|
|
|
|
### Legacy Quote System (Keep for compatibility)
|
|
- `quotes` (28 rows) - Legacy quotes (still referenced)
|
|
- `generated_quotes` (3 rows) - PDF generation data
|
|
|
|
### System Tables
|
|
- `openai_usage_stats` (2 rows) - API usage tracking
|
|
- `v_enhanced_quotes` - Database view (keep)
|
|
|
|
## Consolidation Opportunities
|
|
|
|
### Material Tables
|
|
Currently have 4 material-related tables:
|
|
- `material_prices` (main table)
|
|
- `dynamic_materials` (import data)
|
|
- `ocr_materials` (processed data)
|
|
- `project_materials` (project-specific)
|
|
|
|
**Recommendation:** Keep current structure as each serves different purposes.
|
|
|
|
### Quote Tables
|
|
Currently have 3 quote tables:
|
|
- `quotes` (legacy but still used)
|
|
- `generated_quotes` (PDF data)
|
|
- `project_quotes` (new system)
|
|
|
|
**Recommendation:** Keep all for now, plan migration from `quotes` to `project_quotes` in future.
|
|
|
|
## Implementation Plan
|
|
|
|
### Phase 1: Remove Empty Tables (Immediate - No Risk)
|
|
```sql
|
|
DROP TABLE bygma_materials_cache;
|
|
DROP TABLE quote_items;
|
|
DROP TABLE quote_feedback;
|
|
DROP TABLE quote_pricing_history;
|
|
DROP TABLE recent_material_prices;
|
|
```
|
|
|
|
### Phase 2: Remove Legacy Tables (Low Risk)
|
|
```sql
|
|
DROP TABLE labor_categories;
|
|
DROP TABLE labor_items;
|
|
DROP TABLE materials;
|
|
DROP TABLE pricing_history;
|
|
DROP TABLE web_price_suggestions;
|
|
DROP TABLE standard_pricing;
|
|
```
|
|
|
|
### Phase 3: Remove System Tables (Medium Risk - Verify First)
|
|
```sql
|
|
DROP TABLE orders;
|
|
DROP TABLE order_tasks;
|
|
DROP TABLE time_entries;
|
|
DROP TABLE users;
|
|
DROP TABLE sessions;
|
|
```
|
|
|
|
## Expected Benefits
|
|
|
|
### Storage Reduction
|
|
- Estimated **50% reduction** in database tables (32 → 16)
|
|
- Cleaner database structure
|
|
- Improved backup/restore times
|
|
|
|
### Performance Improvements
|
|
- Faster SHOW TABLES operations
|
|
- Reduced database metadata overhead
|
|
- Cleaner development environment
|
|
|
|
### Maintenance Benefits
|
|
- Reduced confusion about active vs legacy tables
|
|
- Simplified database documentation
|
|
- Easier troubleshooting
|
|
|
|
## Validation Steps
|
|
|
|
Before executing cleanup:
|
|
1. ✅ Verify no frontend references to removed tables
|
|
2. ✅ Confirm no API endpoints use removed tables
|
|
3. ✅ Check for foreign key constraints
|
|
4. ✅ Backup database before changes
|
|
5. ✅ Test all functionality after Phase 1 cleanup
|
|
|
|
## Current Database Efficiency
|
|
- **Active Usage Rate:** 47% (15/32 tables)
|
|
- **Empty Table Rate:** 16% (5/32 tables)
|
|
- **Cleanup Potential:** 53% (17/32 tables)
|
|
|
|
This cleanup will significantly improve database organization and performance while maintaining all active functionality.
|