Загрузка данных


-- 1. Таблица тарифов (создаем первой, так как на нее ссылаются поездки)
CREATE TABLE tariffs (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    price_per_km NUMERIC(10, 2) NOT NULL,
    min_price NUMERIC(10, 2) NOT NULL
);

-- 2. Таблица водителей
CREATE TABLE drivers (
    id SERIAL PRIMARY KEY,
    full_name VARCHAR(255) NOT NULL,
    phone VARCHAR(20) UNIQUE NOT NULL,
    car_model VARCHAR(100),
    rating NUMERIC(3, 2) DEFAULT 5.0,
    is_active BOOLEAN DEFAULT TRUE
);

-- 3. Таблица клиентов
CREATE TABLE clients (
    id SERIAL PRIMARY KEY,
    full_name VARCHAR(255) NOT NULL,
    phone VARCHAR(20) UNIQUE NOT NULL,
    registration_date DATE DEFAULT CURRENT_DATE
);

-- 4. Таблица поездок (содержит внешние ключи)
CREATE TABLE rides (
    id SERIAL PRIMARY KEY,
    driver_id INT REFERENCES drivers(id) ON DELETE SET NULL,
    client_id INT REFERENCES clients(id) ON DELETE CASCADE,
    tariff_id INT REFERENCES tariffs(id),
    start_address TEXT NOT NULL,
    end_address TEXT NOT NULL,
    distance_km NUMERIC(10, 2),
    start_time TIMESTAMP,
    end_time TIMESTAMP,
    total_price NUMERIC(10, 2) DEFAULT 0,
    status VARCHAR(20) DEFAULT 'pending' -- Возможные: pending, active, completed, cancelled
);