# Vehicle Database A comprehensive database system for storing information about vehicle brands, models, years, and engines. ## Overview This project provides a structured database for vehicle information with the following entities: - **Brands**: Vehicle manufacturers with details like country of origin and founding year - **Models**: Vehicle models with body type, generation, and production years - **Years**: Calendar years for vehicle production - **Engines**: Engine specifications including displacement, cylinders, power, and fuel type - **Model-Year-Engine**: Junction table linking all entities with trim levels and specifications ## Database Schema The database uses SQLite and consists of the following tables: ### `brands` - `id`: Primary key - `name`: Brand name (e.g., Toyota, Ford) - `country`: Country of origin - `founded_year`: Year the company was founded ### `engines` - `id`: Primary key - `name`: Engine name - `displacement_cc`: Engine displacement in cubic centimeters - `cylinders`: Number of cylinders - `fuel_type`: Type of fuel (gasoline, diesel, electric, hybrid) - `power_hp`: Horsepower - `torque_nm`: Torque in Newton meters - `engine_code`: Manufacturer engine code ### `models` - `id`: Primary key - `brand_id`: Foreign key to brands table - `name`: Model name (e.g., Camry, Civic) - `body_type`: Body style (sedan, SUV, truck, etc.) - `generation`: Model generation - `production_start_year`: Year production started - `production_end_year`: Year production ended (NULL if still in production) ### `years` - `id`: Primary key - `year`: Calendar year ### `model_year_engine` - `id`: Primary key - `model_id`: Foreign key to models table - `year_id`: Foreign key to years table - `engine_id`: Foreign key to engines table - `trim_level`: Trim level (e.g., base, luxury, sport) - `drivetrain`: Drive system (FWD, RWD, AWD, 4WD) - `transmission`: Transmission type (manual, automatic, CVT) ## Setup 1. Install Python 3.x if not already installed 2. Clone or download this repository 3. Run the database manager script: ```bash cd vehicle_database python scripts/database_manager.py ``` This will create the database, populate it with sample data, and run example queries. ## Usage The `VehicleDatabaseManager` class provides methods to: - Create and manage the database schema - Insert new brands, models, engines, and years - Query vehicle information - Link models, years, and engines with trim levels and specifications ## Sample Queries The script demonstrates several query patterns: - Get all brands - Get models for a specific brand - Search for specific vehicles by brand, model, year, or engine - Retrieve comprehensive vehicle information ## Extending the Database To add more data, you can: 1. Use the provided Python API 2. Directly execute SQL commands on the SQLite database 3. Import data from CSV files using the provided structure ## File Structure ``` vehicle_database/ ├── sql/ │ └── schema.sql # Database schema ├── scripts/ │ └── database_manager.py # Python database manager ├── data/ # Directory for data files └── README.md # This file ```