Files
tilbudgivern/database_cleanup_recommendations.md
T

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 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)

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:

  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.