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