# Diagrama de Base de Datos - Catálogo de Autopartes ## Diagrama de Relaciones (ERD) ``` ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ VEHÍCULOS (Existente) │ └─────────────────────────────────────────────────────────────────────────────────────────┘ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ brands │ │ models │ │ years │ │ engines │ ├──────────────┤ ├──────────────┤ ├──────────────┤ ├──────────────┤ │ id (PK) │◄────│ brand_id(FK) │ │ id (PK) │ │ id (PK) │ │ name │ │ id (PK) │ │ year │ │ name │ │ country │ │ name │ └──────┬───────┘ │ displacement │ │ founded_year │ │ body_type │ │ │ cylinders │ └──────────────┘ │ generation │ │ │ fuel_type │ └──────┬───────┘ │ │ power_hp │ │ │ └──────┬───────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────┐ │ model_year_engine (MYE) │ ├─────────────────────────────────────────────────────┤ │ id (PK) ◄─────── Identificador único de │ │ model_id (FK) configuración vehículo │ │ year_id (FK) │ │ engine_id (FK) │ │ trim_level │ │ drivetrain │ │ transmission │ └────────────────────────┬────────────────────────────┘ │ │ (1:N) ▼ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ FASE 1: CATÁLOGO DE PARTES │ └─────────────────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ part_categories │ │ part_groups │ │ parts │ ├──────────────────┤ ├──────────────────┤ ├──────────────────┤ │ id (PK) │◄────────│ category_id (FK) │◄────────│ group_id (FK) │ │ name │ │ id (PK) │ │ id (PK) │ │ name_es │ │ name │ │ oem_part_number │ │ parent_id (FK)───┼─┐ │ name_es │ │ name │ │ slug │ │ │ slug │ │ name_es │ │ icon_name │ │ │ display_order │ │ description │ │ display_order │◄┘ └──────────────────┘ │ weight_kg │ └──────────────────┘ │ material │ │ │ is_discontinued │ │ (Ej: 12 categorías) │ superseded_by_id │ │ - Engine └────────┬─────────┘ │ - Brakes │ │ - Suspension │ │ - etc. │ │ ┌────────────────────────────────────────────┼────────────────┐ │ │ │ ▼ ▼ │ ┌──────────────────┐ ┌──────────────────┐ │ │ vehicle_parts │ │ (FASE 2) │ │ ├──────────────────┤ │ aftermarket_parts│ │ │ id (PK) │ ├──────────────────┤ │ │ mye_id (FK) ─────┼──► model_year_engine │ oem_part_id (FK)─┼─────────┤ │ part_id (FK) ────┼──► parts │ manufacturer_id │ │ │ quantity_required│ │ part_number │ │ │ position │ │ quality_tier │ │ │ fitment_notes │ │ price_usd │ │ └──────────────────┘ └──────────────────┘ │ │ ┌──────────────────┐ │ │ part_cross_refs │ │ ├──────────────────┤ │ │ part_id (FK) ────┼─────────┘ │ cross_ref_number │ │ reference_type │ └──────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ FASE 2: AFTERMARKET Y FABRICANTES │ └─────────────────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────┐ ┌──────────────────┐ │ manufacturers │◄────────│ aftermarket_parts│ ├──────────────────┤ ├──────────────────┤ │ id (PK) │ │ manufacturer_id │ │ name │ │ oem_part_id (FK) │──► parts │ type │ │ part_number │ │ quality_tier │ │ name │ │ country │ │ price_usd │ │ logo_url │ │ warranty_months │ └──────────────────┘ └──────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ FASE 3: DIAGRAMAS EXPLOSIONADOS │ └─────────────────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ diagrams │ │ vehicle_diagrams │ │diagram_hotspots │ ├──────────────────┤ ├──────────────────┤ ├──────────────────┤ │ id (PK) │◄────────│ diagram_id (FK) │ │ diagram_id (FK)──┼──► diagrams │ name │ │ mye_id (FK) ─────┼──► MYE │ part_id (FK) ────┼──► parts │ name_es │ └──────────────────┘ │ callout_number │ │ group_id (FK)────┼──► part_groups │ shape │ │ image_path │ │ coords │ │ thumbnail_path │ └──────────────────┘ └──────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ FASE 4: BÚSQUEDA Y VIN │ └─────────────────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────┐ ┌──────────────────┐ │ parts_fts │ │ vin_cache │ │ (FTS5 Virtual) │ ├──────────────────┤ ├──────────────────┤ │ vin │ │ oem_part_number │ │ decoded_data │──► JSON from NHTSA │ name │ │ mye_id (FK) ─────┼──► model_year_engine │ name_es │ │ expires_at │ │ description │ └──────────────────┘ └──────────────────┘ ``` ## Flujo de Navegación del Usuario ``` ┌─────────┐ ┌─────────┐ ┌─────────────────┐ ┌────────────────┐ │ Marcas │───►│ Modelos │───►│ Vehículos │───►│ Categorías │ │ (brands)│ │(models) │ │(model_year_eng) │ │(part_categories│ └─────────┘ └─────────┘ └─────────────────┘ └───────┬────────┘ │ ┌────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────────┐ │ Grupos │───►│ Partes │───►│ Detalle Parte │ │(part_groups)│ │ (parts) │ │ + Alternativas Aftermarket │ └─────────────┘ └─────────────┘ │ + Cross-References │ │ │ + Diagrama con Hotspots │ │ └─────────────────────────────┘ │ ▼ ┌─────────────────────┐ │ Filtrar por MYE │ │ (vehicle_parts) │ │ Cantidad, Posición │ └─────────────────────┘ ``` ## Resumen de Tablas por Fase | Fase | Tabla | Registros Esperados | Descripción | |------|-------|---------------------|-------------| | Base | brands | ~50 | Marcas de vehículos | | Base | models | ~2,000 | Modelos de vehículos | | Base | years | ~30 | Años (1995-2025) | | Base | engines | ~500 | Especificaciones de motores | | Base | model_year_engine | ~50,000 | Configuraciones únicas | | **F1** | part_categories | 12 | Categorías principales | | **F1** | part_groups | ~200 | Subcategorías | | **F1** | parts | ~100,000 | Catálogo maestro OEM | | **F1** | vehicle_parts | ~500,000 | Fitment por vehículo | | **F2** | manufacturers | ~50 | OEM y aftermarket | | **F2** | aftermarket_parts | ~300,000 | Alternativas aftermarket | | **F2** | part_cross_references | ~200,000 | Números alternativos | | **F3** | diagrams | ~5,000 | Diagramas explosionados | | **F3** | vehicle_diagrams | ~20,000 | Asignación a vehículos | | **F3** | diagram_hotspots | ~50,000 | Áreas clickeables | | **F4** | parts_fts | Virtual | Índice full-text | | **F4** | vin_cache | Variable | Cache de VINs | ## Ejemplo de Datos Relacionados ### Un Toyota Camry 2023 2.5L LE completo: ```sql -- Vehículo brands.id = 1 (Toyota) models.id = 1 (Camry) years.id = 4 (2023) engines.id = 1 (2.5L 4-Cyl) model_year_engine.id = 1 -- Sus partes (via vehicle_parts) ┌────────────────┬───────────────────────────────┬──────┬──────────┐ │ OEM # │ Parte │ Cant │ Posición │ ├────────────────┼───────────────────────────────┼──────┼──────────┤ │ 04152-YZZA1 │ Filtro de Aceite │ 1 │ - │ │ 17801-0V020 │ Filtro de Aire │ 1 │ - │ │ 90919-01275 │ Bujía Iridium │ 4 │ - │ │ 04465-06200 │ Pastillas Freno Delanteras │ 1 │ front │ │ 04466-06200 │ Pastillas Freno Traseras │ 1 │ rear │ │ 43512-06190 │ Disco Freno Delantero │ 2 │ front │ │ 42431-06190 │ Disco Freno Trasero │ 2 │ rear │ │ 48510-06780 │ Amortiguador Delantero │ 2 │ front │ │ 48530-06400 │ Amortiguador Trasero │ 2 │ rear │ └────────────────┴───────────────────────────────┴──────┴──────────┘ -- Alternativas para el filtro de aceite (via aftermarket_parts) ┌────────────────┬─────────┬─────────────────────────────┬─────────┐ │ Fabricante │ Número │ Nombre │ Precio │ ├────────────────┼─────────┼─────────────────────────────┼─────────┤ │ Bosch │ 3311 │ Premium Oil Filter │ $12.99 │ │ Fram │ XG9972 │ Ultra Synthetic Oil Filter │ $8.49 │ │ WIX │ 57047 │ Oil Filter │ $7.99 │ └────────────────┴─────────┴─────────────────────────────┴─────────┘ ```