-- 1. Основная таблица клиентов
CREATE TABLE clients (
id SERIAL PRIMARY KEY,
client_type VARCHAR(20) NOT NULL DEFAULT 'individual', -- individual | corporate
-- Общие поля
phone VARCHAR(20) UNIQUE NOT NULL,
phone2 VARCHAR(20),
email VARCHAR(100),
notes TEXT,
discount_percent DECIMAL(5,2) DEFAULT 0,
status VARCHAR(20) DEFAULT 'active', -- active, inactive, blacklisted
total_orders INTEGER DEFAULT 0,
total_spent DECIMAL(15,2) DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE client_individuals (
client_id INTEGER PRIMARY KEY REFERENCES clients(id) ON DELETE CASCADE,
last_name VARCHAR(60) NOT NULL,
first_name VARCHAR(60) NOT NULL,
middle_name VARCHAR(60), -- отчество (может быть NULL)
birth_date DATE,
gender VARCHAR(10), -- male / female
address TEXT
);
-- 3. Юридические лица
CREATE TABLE client_corporates (
client_id INTEGER PRIMARY KEY REFERENCES clients(id) ON DELETE CASCADE,
company_name VARCHAR(150) NOT NULL, -- Полное название организации
short_name VARCHAR(100), -- Краткое название
inn VARCHAR(20) UNIQUE, -- ИНН
kpp VARCHAR(20), -- КПП
ogrn VARCHAR(20), -- ОГРН
legal_address TEXT, -- Юридический адрес
actual_address TEXT, -- Фактический адрес
director_name VARCHAR(150), -- ФИО директора
contact_person VARCHAR(150) -- Контактное лицо
);