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


-- 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)                   -- Контактное лицо
);