4.8 KiB
4.8 KiB
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:
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:
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
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 managementproject_geometry(8 rows) - Project measurementsproject_labor(8 rows) - Labor calculationsproject_materials(25 rows) - Project materialsproject_quotes(8 rows) - Generated quotesproject_types(4 rows) - Project categorizationroof_types(6 rows) - Roof type definitions
Pricing & Materials
material_prices(2,427 rows) - Main material pricingdynamic_materials(1,095 rows) - Dynamic pricing dataocr_materials(1,183 rows) - OCR processed materialstask_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 trackingv_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)
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)
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)
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:
- ✅ Verify no frontend references to removed tables
- ✅ Confirm no API endpoints use removed tables
- ✅ Check for foreign key constraints
- ✅ Backup database before changes
- ✅ 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.